首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用大写名称时,Bs.deriving抽象获取函数返回undefined

使用大写名称时,Bs.deriving抽象获取函数返回undefined
EN

Stack Overflow用户
提问于 2019-01-25 01:47:07
回答 1查看 115关注 0票数 0

在bs.deriving摘要的bucklescript文档示例中,您可以使用nameGet()获取所创建对象的属性

这是可行的:

代码语言:javascript
复制
@bs.deriving abstract]
type person = {
  name: string,
  age: int,
  job: string,
};
let joe = person(~name="Joe", ~age=20, ~job="teacher");
let name = nameGet(joe);

如果将其更改为大写name键,则生成的getter将变为_NameGet()

代码语言:javascript
复制
type person = {
  _Name: string,
  age: int,
  job: string,
};
let joe = person(~_Name="Joe", ~age=20, ~job="teacher");
let name = _NameGet(joe);

在第二个示例中,name值返回时未定义。如何解决这个问题呢?repl中的示例:tryreason

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 01:50:36

使用bs.as为密钥的名称添加别名。这显然不会更改getter的名称,在本例中,该名称将保持为_NameGet,但值不再返回undefined。

代码语言:javascript
复制
[@bs.deriving abstract]
type person2 = {
  [@bs.as "Name"]
  _Name: string,
  age: int,
  job: string,
};

let john = person2(~_Name="John", ~age=20, ~job="teacher")
let namejohn = _NameGet(john);
Js.log(namejohn);

输出:John

文档:renaming fields

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54352600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档