我有几次使用表达式anArray.[i]
来访问数组中的元素。
但突然间,当我尝试制作一个非常简单的功能时,我得到一个错误。
let safeIndexIf anArray i =
anArray.[i]
我需要创建一个返回数组的第i个元素的函数,所以我觉得这很容易,但没有...
错误:
运算符'expr。[idx]'已根据此程序点之前的信息用于不确定类型的对象。考虑添加更多类型约束
为什么这不起作用?我不知道错误意味着什么。所有我知道我已经做了类似很多次的事情来访问anArray的元素所以为什么我不能这次?
答案 0 :(得分:7)
这意味着编译器类型推断无法确定anArray
确实是一个数组。
错误消息建议您添加类型注释,您可以这样做以表示anArray
是通用数组:
let safeIndexIf (anArray : array<'a>) i =
anArray.[i]
如果您想避免使用类型注释,可以尝试重写您的函数以使用具有相同行为的Array.item
:
let safeIndexIf anArray i =
Array.item i anArray