F#访问数组第i个元素函数报错

F# access Array ith element function Error

我曾多次使用表达式 anArray.[i] 访问数组中的元素。

但是当我尝试制作一个非常非常简单的函数时突然出现错误。

let safeIndexIf anArray i =
  anArray.[i] 

我需要创建一个函数 returns 数组的第 i 个元素,所以我认为这很简单,但不...

错误:

运算符 'expr.[idx]' 已根据此程序点之前的信息用于不确定类型的对象。考虑添加更多类型约束

为什么这不起作用?我不知道这个错误是什么意思。我所知道的是,我已经做了很多次类似的事情来访问 anArray 的元素,所以为什么这次我不能?

意味着编译器类型推断无法确定anArray确实是一个数组。

错误消息建议您添加类型注释,您可以这样做来表示 anArray 是一个通用数组:

let safeIndexIf (anArray : array<'a>) i =
    anArray.[i]

如果您想避免类型注释,您可以尝试重写您的函数以使用具有相同行为的 Array.item

let safeIndexIf anArray i =
    Array.item i anArray