在文档中:https://bucklescript.github.io/docs/en/object.html包含带有可变字段和可选字段的记录示例。当我尝试同时使用两者时,它会失败:
编译:
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行: 该表达式具有类型单位-> person 但是希望有人类型的表达
第7行是ageSet
行。
我在这里错过了什么吗?
答案 0 :(得分:2)
我重新阅读了documentation,这是我错过的部分
注意:既然您的创建函数包含可选字段,我们在末尾强制使用无标签()表示您已完成函数的应用。
type person = {
mutable age: int;
job: string [@bs.optional];
} [@@bs.deriving abstract]
let joe = person ~age:20 ~job:"teacher" ()
let () = ageSet joe 21