包装返回记录的OCaml函数
问题描述:
我已经定义了OCaml函数manipulate: string -> string
。我把它包起来做一个JS功能jsManipulate
:包装返回记录的OCaml函数
let() =
Js.Unsafe.global##.jsManipulate := Js.wrap_callback
(fun s -> Js.string (manipulate (Js.to_string s)))
现在,我想不光是制造一个字符串manipulate
回报的更多信息;我希望它返回一个记录:manipulate: string -> myrecord
其中OCARL格式的myrecord = { result: string; info_1: int; info_2: bool }
。
在这种情况下,是否有人知道如何包装manipulate
来创建一个JS函数,该函数还返回来自JS字符串的JS记录(或对象?)?
PS:我只想调用manipulate
一次(而不是3次)来构建JS对象。
答
即使在使用js_of_ocaml编译JavaScript代码时,普通JavaScript也不能理解OCaml的记录。
你应该用什么来代替是一个javascript对象(javascript和记录和对象没有区别)。你可以阅读有关在这个页面的底部创建文本对象:http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js
您可以创建myrecord -> <..> Js.t
类型返回一个对象的功能to_object
。那么你可以用它来包装而不是Js.to_string
。