Копирование полей в OCaml - PullRequest
       25

Копирование полей в OCaml

7 голосов
/ 26 октября 2010

У меня очень простой вопрос относительно записей OCaml. Предположим, у меня определена запись:

type r = {a:int;b:int;c:int}
let x = {a=3;b=8;c=2}

Теперь предположим, что я хочу создать новую запись, у которой все поля равны x, но с c = 4. Я мог бы написать:

let y = {a=3;b=8;c=4}

но это раздражает, потому что нет необходимости переписывать a = 3 и b = 8. Я мог бы также написать:

let y = {a=x.a;b=x.b;c=4}

но это все равно не хорошо, если в записи много полей. Есть ли способ написать что-то вроде:

let y = {x with c=4}

или что-то в этом роде?

Большое спасибо за любую помощь.

Всего наилучшего, Surikator.

1 Ответ

15 голосов
/ 26 октября 2010

Да, и это точный синтаксис.

let y = {x with c=4}
...