Types OCAML记录字段不可更改

Types OCAML记录字段不可更改,types,ocaml,mutable,records,Types,Ocaml,Mutable,Records,我有以下代码: type seed = {c: Graphics.color option; x : int; y : int };; type voronoi = {dim : int * int; seeds : seed array};; let v1 = {dim = 50,50; seeds = [| {c=Some Graphics.red; x=50; y=100}; |]} 当我尝试这个时: v1.seeds.(0).c <- Some Graphics.green;;

我有以下代码:

type seed = {c: Graphics.color option; x : int; y : int };;
type voronoi = {dim : int * int; seeds : seed array};;

let v1 = {dim = 50,50; seeds = [| {c=Some Graphics.red; x=50; y=100}; |]}
当我尝试这个时:

v1.seeds.(0).c <- Some Graphics.green;;

我能做什么?

记录字段是不可变的,除非另有声明。OCaml参考手册说

记录字段也可以通过赋值进行修改,只要它们在记录类型的定义中声明为可变的

以下方面应起作用:

type seed = {mutable c: Graphics.color option; x : int; y : int }

除非另有声明,否则记录字段是不可变的。OCaml参考手册说

记录字段也可以通过赋值进行修改,只要它们在记录类型的定义中声明为可变的

以下方面应起作用:

type seed = {mutable c: Graphics.color option; x : int; y : int }

事实上,c是不可变的

你应该这样写:


事实上,c是不可变的

你应该这样写:

或者使用快捷语法v1.seeds.0,或者使用快捷语法v1.seeds.0
v1.seeds.(0) <- {c=Some Graphics.green;x=v1.seeds.(0).x;y=v1.seeds.(0).y};;