包装返回记录的 OCaml 函数



我已经定义了一个OCaml函数manipulate: string -> string。我包装它以使JS函数jsManipulate

let () =
  Js.Unsafe.global##.jsManipulate := Js.wrap_callback
      (fun s -> Js.string (manipulate (Js.to_string s)))

现在,我想让manipulate返回更多信息,而不仅仅是一个字符串;我希望它返回一条记录:manipulate: string -> myrecord OCaml 格式myrecord = { result: string; info_1: int; info_2: bool }

在这种情况下,有谁知道如何包装manipulate以制作一个从 JS 字符串返回 JS 记录(或对象?

PS:我只想调用manipulate一次(而不是3次)来构建JS对象。

常规的javascript将无法理解OCaml的记录,即使代码是用js_of_ocaml JavaScript编译

的。

你应该使用一个javascript对象(在javascript中,记录和对象之间没有区别)。您可以在本页底部阅读有关创建文本对象的信息:http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js

您可以创建返回对象的 myrecord -> < .. > Js.t 类型的函数to_object。然后你可以用它来包装而不是Js.to_string.

最新更新