2016-06-07 105 views
0

我已經定義了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對象。

回答

0

即使在使用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