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