node.js - js_of_ocaml 从 js 调用 ocaml 中的函数
问题描述
我有一个使用可变变量的函数,该变量接受字符串并返回字符串。(它是一个读取评估打印循环解释器)
我尝试这样导出它:
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
推荐阅读
- python - 我如何使用 groupby 或重新采样对具有严重性或严重性的警报进行每日计数
- html - 在标题之后,将点设置到页面边缘
- python - 如何不重新加载Spacy?
- laravel - npm install 会影响 Laravel 项目吗?
- sql - 在表变量上创建非聚集索引
- r - 实现按列分组的最小值的数据框
- delphi-7 - 在 Delphi XE8 和 Delphi 7 之间显示 RTF 文本的问题
- javascript - 如何查看用户输入的输入值 - 在控制台日志中单击
- javascript - 动态有效地将今天的日期作为字符串分配给属性
- android - 即使数据没有变化,LiveData 观察者的 onChanged 也会在活动轮换时被调用