我是 JavaScript 新手,我正在尝试使用js_of_ocaml
.
我先写了一个很简单的cubes.ml
:
let simple (a: int) =
a + 1234
然后遵守它:
ocamlfind ocamlc -package js_of_ocaml -package js_of_ocaml.syntax \
-syntax camlp4o -linkpkg -o cubes.byte cubes.ml
然后生成 JavaScript 文件:
js_of_ocaml cubes.byte
这是生成的cubes.js。请注意,我们无法在该文件中找到1234
或函数名称。simple
我有另一个 JavaScript 文件Home.js
,我希望函数callSimple
在其中调用生成的内容cubes.js
。但是我不知道怎么写。有人可以帮忙吗?
(function () {
...
function callSimple(a) {
return ???;
};
...
})();
编辑1:
我尝试了@EdgarAroutiounian 提出的解决方案:
(* cubes.ml *)
let () =
Js.Unsafe.global##.jscode := (object%js
val simple = Js.wrap_meth_callback
(fun a -> a + 1234)
val speak = Js.wrap_meth_callback
(fun () -> print_endline "hello")
end)
如果我写home.js
:
confirm(jscode.simple(10)); // 1244 is expected
confirm(jscode.speak()); // "hello" as string is expected
第一行返回function (a){return p(c,aM(b,a))}
,第二行返回0
。他们不是我所期望的。