0

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2016-06-07T10:37:29.303 回答