js_of_ocml从js调用ocaml中的一个函数



我有一个函数,它使用一个可变变量,该变量接受字符串并返回字符串。(它是一个read-eval-print-loop解释器(

我试着这样导出:

let () =
Js.export_all
(object%js
method js_run_repl = Js.wrap_callback js_run_repl
end)

以下是导出的函数片段

let js_run_repl str =
match String.(compare str "quit") with
| 0 -> "bye"
| _ -> ...

不管我的输入如何,它总是返回bye,直接在ocaml中调用函数会产生预期的行为。以下是节点的输出:

> var mod = require('./main.bc');
undefined
> mod.js_run("constant P : Prop");
MlBytes { t: 0, c: 'bye', l: 3 }
> 

这也是为什么函数被称为js_run而不是js_run_repl的特殊之处。后者根据节点未定义。

let () =
Js.export_all
(object%js
method js_run_repl str = 
str
|> Js.to_string
|> js_run_repl
|> Js.string
end)

我必须将字符串显式转换为ocaml字符串,然后再转换回js

相关内容

  • 没有找到相关文章

最新更新