正在试验数组和引用 - 我的目的是创建对数组的引用,然后在闭包内使用该引用来访问数组的某个元素。 FSI尝试:
> let dk2 = Array.create 5 0
let dk2ref = ref dk2;;
val dk2 : int [] = [|0; 0; 0; 0; 0|]
val dk2ref : int [] ref = {contents = [|0; 0; 0; 0; 0|];}
> !dk2ref.[1]
stdin(3,2): error FS0039: The field, constructor or member 'Item' is not defined
是否有直接访问引用数组元素的方法? (在这种情况下,dk2ref的第二个元素)?
答案 0 :(得分:6)
我不确定你为什么需要参考数组。
查找operator precedence table,.
运算符的优先级高于!
运算符。因此,您的示例被解析为!(dk2ref.[1])
,导致错误,因为'a ref
未实现indexed properties。
您只需在正确的位置添加括号:
> (!dk2ref).[1]
val it : int = 0