reason - Reason 中的 .() 和 .{} 有什么区别?

标签 reason bucklescript

我试图弄清楚为什么使用 Js.Promise 的示例使用

Js.Promise.(
    ...
)

Json.Decode 的示例使用

Json.Decode.{
    ...
}

据我了解,.() 打开了 Js.Promise,这样我就可以调用 Js.Promise 中的任何函数,而无需必须将 Js.Promise 作为模块前缀。

但是 .{} 是做什么的?

最佳答案

两者都将一些模块声明放入范围内,但 .{} 创建一条记录,而 .() 包装一个表达式。

记录:

let point = json =>
  Json.Decode.{
    x: json |> field("x", float),
    y: json |> field("y", float)
  };

相当于:

let point = json =>
  {
    x: json |> Json.Decode.field("x", Json.Decode.float),
    y: json |> Json.Decode.field("y", Json.Decode.float)
  };

同样,对于表达式:

let _ =
  Js.Promise.(then_(value => resolve(Js.log(value)), okPromise));

相当于:

let _ =
  Js.Promise.then_(value => Js.Promise.resolve(Js.log(value)), okPromise));

关于reason - Reason 中的 .() 和 .{} 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49870614/

相关文章:

module - 是否可以不导出 BuckleScript 中的模块?

json - 将 JSON 字段转换为 ReasonML 变体

material-ui - 如何在 reason-react 绑定(bind)中跨组件组合 Prop ?

reason - bs-webapi - 如何循环 Dom.nodeList?

json - 如何将此 JSON 解析为记录类型?

ocaml - 带有可选和可变字段的记录

types - 如何使用 Js.Dict.t 类型为 Js.Dict.get

set - 如何在 ReasonML 中使用 Belt.Set 的示例?

reason - 绑定(bind)带有选项参数的函数