Ocaml 带有可选和可变字段的记录
在文档中:有具有可变字段和可选字段的记录的示例。当我尝试使用这两种方法时,它都失败了: 汇编:Ocaml 带有可选和可变字段的记录,ocaml,ffi,bucklescript,Ocaml,Ffi,Bucklescript,在文档中:有具有可变字段和可选字段的记录的示例。当我尝试使用这两种方法时,它都失败了: 汇编: type person = { mutable age: int; job: string; } [@@bs.deriving abstract] let joe = person ~age:20 ~job:"teacher" let () = ageSet joe 21 添加[@bs.optional]属性: type person = { mutable age: int; j
type person = {
mutable age: int;
job: string;
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher"
let () = ageSet joe 21
添加[@bs.optional]
属性:
type person = {
mutable age: int;
job: string [@bs.optional];
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher"
let () = ageSet joe 21
错误消息:
第7行,第20行:
此表达式的类型为unit->person
但应为person类型的表达式
第7行是年龄集
行
我在这里遗漏了什么吗?我重新阅读了,这是我遗漏的部分
注意:既然您的创建函数包含可选字段,那么我们在末尾强制使用unlabeled()来表示您已经完成了该函数的应用
Ocaml函数要求最后一个参数始终是非可选的。所以,当你有一个不是这样的函数时,一般的解决方案是添加一个伪单位参数。bs.optional别无选择,只能在这里这样做。
type person = {
mutable age: int;
job: string [@bs.optional];
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher" ()
let () = ageSet joe 21