使用可选字段和可变字段进行记录

时间:2018-06-24 19:02:24

标签: ocaml ffi bucklescript

在文档中: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行。

我在这里错过了什么吗?

1 个答案:

答案 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