Ocaml - 访问记录数组中的组件

Mig*_*cia 5 arrays ocaml record

我有一个记录类型tt的数组 - 最初有更多组件;-) - 并喜欢在for循环中更改其值:

type tt={mutable x: int};;
let f0={x= -1};;
let max=10;;
let ff=Array.create max f0;;
for i=0 to max-1 do ff.(i).x <- i;done;;
Run Code Online (Sandbox Code Playgroud)

然而,ff的所有字段都具有值9而不是具有0到9的值.ff.(i).x是否正确?我也试过了

for i=0 to max-1 do f0.x <- i;ff.(i) <- f0;done;;
Run Code Online (Sandbox Code Playgroud)

但结果相同......(我正在使用OCaml版本4.00.1)有什么问题?如果有人能给我一个提示,我会很高兴的!

gas*_*che 8

这是初学者所做的经典错误Array.create和可变状态.我在那里详细解释过.摘要是Array.create n foo不创建foo(怎么可能?)的副本,它创建一个所有指向同一个案例的数组foo.