在Reason中思考一种在对象上定义简单镜头的方法。
我尝试..
通过以下代码使用可扩展对象(在字段列表之前):
type hasName('a, 't) = {.. name: 't} as 'a;
type lens('s, 'v) = {
get: 's => 'v,
set: ('s, 'v) => 's,
};
let nameLens: lens(hasName('a, 't), 't) = {
get: s => s.name,
set: (s, v) => {...s, name: v},
}
Run Code Online (Sandbox Code Playgroud)
我收到“找不到记录字段名称”。错误,尽管类型hasName
肯定应该有一个...我在这里做错了什么?
免责声明:我真的是Reason / OCaml的新手,所以我可能会错过一些显而易见的事情。