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};;