F#access数组元素函数错误

时间:2016-10-31 20:10:47

标签: arrays f# element

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

但突然间,当我尝试制作一个非常简单的功能时,我得到一个错误。

let safeIndexIf anArray i =
  anArray.[i] 

我需要创建一个返回数组的第i个元素的函数,所以我觉得这很容易,但没有...

错误:

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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

let safeIndexIf anArray i =
    Array.item i anArray