OCaml 的记录是否有类似于 JavaScript 的扩展运算符?

Vee*_*mas 2 ocaml

我想知道 OCaml 是否可以执行类似于以下代码(在 TypeScript 中)的操作:

interface User {
  name: string
  email: string
}

function titi(user: User) {
  console.log(user)
}

let u1 = {name: "v2"}
let u2 = {...u1, email: "v2@x.y.z"}

titi(u2)
Run Code Online (Sandbox Code Playgroud)

Jef*_*eld 5

目前尚不完全清楚您的要求是什么。但 OCaml 中最接近的构造可能是with在记录构造函数中:

type user = { name : string; email : string }

let user_a = { name = "ua"; email = "e" }
let user_b = { user_a with name = "ub" }
Run Code Online (Sandbox Code Playgroud)

(当然,在 OCaml 中,您必须构造完整的记录值,不能只有其中一个字段。)