小编use*_*298的帖子

如果对象类型可扩展,我应该如何指向记录字段?

在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的新手,所以我可能会错过一些显而易见的事情。

ocaml object lenses reason

3
推荐指数
1
解决办法
93
查看次数

标签 统计

lenses ×1

object ×1

ocaml ×1

reason ×1