不知道为什么需要所有这些运算符。理由是什么?为什么常规的 OCaml 对象语法不够用?
obj##.m
obj##.m := e
obj##m
此处的文档:http: //ocsigen.org/js_of_ocaml/3.6.0/manual/ppx
不知道为什么需要所有这些运算符。理由是什么?为什么常规的 OCaml 对象语法不够用?
obj##.m
obj##.m := e
obj##m
此处的文档:http: //ocsigen.org/js_of_ocaml/3.6.0/manual/ppx
OCaml 对象没有属性。如果你写,你就是在 objectobj#m
上调用方法。如果您编写,您将再次调用object 上的方法,它返回一个 type 的值,然后将其传递给 operator 。m
obj
obj#m := e
m
obj
'e ref
(:=)
因此,运算符,分别##.
是调用的语法糖。(类似地,是 . 的语法糖。)Js.Unsafe.get
Js.Unsafe.set
obj##m x y
Js.Unsafe.meth_call obj "m" [|x; y|]
JSOO 不是深入修改 OCaml 编译器以实际将 Javascript 对象映射到 OCaml 对象并正确识别 getter/setter,而是一个薄层,它仅在键入 Javascript 对象时依赖 OCaml 对象,而在执行时完全忽略它们。