包装一个 returns 一条记录的 OCaml 函数
Wrap an OCaml function that returns a record
我定义了一个 OCaml 函数 manipulate: string -> string
。我把它包装成一个 JS 函数 jsManipulate
:
let () =
Js.Unsafe.global##.jsManipulate := Js.wrap_callback
(fun s -> Js.string (manipulate (Js.to_string s)))
现在,我想让 manipulate
return 的信息不仅仅是一个字符串;我想要它 return 一条记录:manipulate: string -> myrecord
其中 myrecord = { result: string; info_1: int; info_2: bool }
OCaml 格式。
在这种情况下,有谁知道如何包装 manipulate
以创建一个 JS 函数,该函数 return 也是来自 JS 字符串的 JS 记录(或对象?)?
PS: 我只想调用 manipulate
一次(而不是 3 次)来构建 JS 对象。
常规 javascript 无法理解 OCaml 的记录,即使代码在 javascript 中编译为 js_of_ocaml。
您应该使用 javascript 对象(javascript 中的记录和对象没有区别)。您可以在本页底部阅读有关创建文字对象的信息:http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js
您可以创建 myrecord -> < .. > Js.t
类型的函数 to_object
,returns 一个对象。然后你可以用它来代替 Js.to_string
.
我定义了一个 OCaml 函数 manipulate: string -> string
。我把它包装成一个 JS 函数 jsManipulate
:
let () =
Js.Unsafe.global##.jsManipulate := Js.wrap_callback
(fun s -> Js.string (manipulate (Js.to_string s)))
现在,我想让 manipulate
return 的信息不仅仅是一个字符串;我想要它 return 一条记录:manipulate: string -> myrecord
其中 myrecord = { result: string; info_1: int; info_2: bool }
OCaml 格式。
在这种情况下,有谁知道如何包装 manipulate
以创建一个 JS 函数,该函数 return 也是来自 JS 字符串的 JS 记录(或对象?)?
PS: 我只想调用 manipulate
一次(而不是 3 次)来构建 JS 对象。
常规 javascript 无法理解 OCaml 的记录,即使代码在 javascript 中编译为 js_of_ocaml。
您应该使用 javascript 对象(javascript 中的记录和对象没有区别)。您可以在本页底部阅读有关创建文字对象的信息:http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js
您可以创建 myrecord -> < .. > Js.t
类型的函数 to_object
,returns 一个对象。然后你可以用它来代替 Js.to_string
.