我想知道 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)
目前尚不完全清楚您的要求是什么。但 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 中,您必须构造完整的记录值,不能只有其中一个字段。)