2016-06-07 4 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, где myrecord = { result: string; info_1: int; info_2: bool } в формате OCaml.

В этом случае кто-нибудь знает, как обернуть manipulate, чтобы создать функцию JS, которая возвращает также JS-запись (или объект?) Из строки JS?

PS: Я хочу позвонить manipulate только один раз (а не 3 раза) для создания объекта JS.

ответ

0

Обычный javascript не сможет понять запись OCaml, даже если код скомпилирован в javascript с помощью js_of_ocaml.

Вы должны использовать вместо этого объект javascript (между записью и объектом в javascript нет разницы). Вы можете прочитать о создании литеральных объектов в нижней части этой страницы: http://ocsigen.org/js_of_ocaml/2.7/api/Ppx_js

Вы можете создать функцию to_object типа myrecord -> <..> Js.t, которая возвращает объект. Затем вы можете использовать его для упаковки вместо Js.to_string.

Смежные вопросы