为什么在js_of_ocaml中需要 ##. 运算符?



不知道为什么需要所有这些运算符。理由是什么?为什么常规的 OCaml 对象语法不够?

obj##.m
obj##.m := e
obj##m

此处的文档:http://ocsigen.org/js_of_ocaml/3.6.0/manual/ppx

OCaml 对象没有属性。如果编写obj#m,则在对象obj上调用方法m。如果你写obj#m := e,你再次在对象obj上调用方法m,它返回一个类型为'e ref的值,然后将其传递给运算符(:=)

因此运算符##.,它只是用于调用Js.Unsafe.get的语法糖,分别Js.Unsafe.set。(同样,obj##m x yJs.Unsafe.meth_call obj "m" [|x; y|]的句法糖。

JSOO不是深入修改OCaml编译器以实际将Javascript对象映射到OCaml对象并正确识别getter/setter,而是依赖于OCaml对象来键入Javascript对象并完全忽略它们以执行的薄层。

相关内容

  • 没有找到相关文章

最新更新