如何解决js_of_ocaml 从 js 调用 ocaml 中的函数
我有一个函数,它使用一个接受字符串并返回字符串的可变变量。 (它是一个读取 eval 打印循环解释器)
我尝试将其导出:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。