包装返回记录

时间:2016-06-07 03:00:29

标签: js-of-ocaml ocsigen

我已经定义了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其中myrecord = { result: string; info_1: int; info_2: bool }采用OCaml格式。

在这种情况下,有没有人知道如何包装manipulate来创建一个从JS字符串返回JS记录(或对象?)的JS函数?

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

1 个答案:

答案 0 :(得分: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