Запись с необязательными и изменяемыми полями - PullRequest
0 голосов
/ 24 июня 2018

В документации: 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 но ожидалось выражение типа человек

Строка 7 - это строка ageSet.

Я что-то здесь упускаю?

1 Ответ

0 голосов
/ 25 июня 2018

Я перечитал документацию , и эту часть я пропустил

Примечание: теперь, когда ваша функция создания содержит дополнительные поля, мы назначаем unlabeled () вконец, чтобы указать, что вы закончили применять функцию.

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

let joe = person ~age:20 ~job:"teacher" ()
let () = ageSet joe 21
...