F#access Array ith元素函数Error

Nul*_*lle 1 arrays f# element

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

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

let safeIndexIf anArray i =
  anArray.[i] 
Run Code Online (Sandbox Code Playgroud)

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

错误:

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

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

Dav*_*haw 7

这意味着编译器类型推断无法确定它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)