2

在文档中: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 行:此表达式的类型为 unit -> person,但表达式应为 person 类型

第 7 行是该ageSet行。

我在这里错过了什么吗?

4

1 回答 1

2

我重新阅读了文档,这是我错过的部分

注意:现在您的创建函数包含可选字段,我们在末尾强制使用未标记的 () 来表示您已完成应用该函数。

type person = {
  mutable age: int;
  job: string [@bs.optional];
} [@@bs.deriving abstract]

let joe = person ~age:20 ~job:"teacher" ()
let () = ageSet joe 21
于 2018-06-24T22:13:44.883 回答