Reason 中的 .() 和 .{} 有什么区别?
What is the difference between .() and .{} in Reason?
我想弄清楚为什么使用 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));
我想弄清楚为什么使用 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));