2016-08-26 9 views
3

somethigが明確でない場合、私の悪い英語には申し訳ありません。私に尋ねてください。 私の目標はOCamlのバックエンドで、この言語で "再生する"ということです。私はフロントエンドをしたいので、beck endプロジェクトを選択しました。Reactで自分のスキルを向上させるためにReactにも反対します(OCamlを使用して、およびジョブのRACTは、私は、ウェブ開発者)OCamlを使用したSqlite

が、私はこのlibにして(sqliteのを選んだ:http://mmottl.github.io/sqlite3-ocaml/api/Sqlite3.html)デシベルとして避けDB構成のための

私は(私がすることを選択した場合は、DBのコールのために少しのラッパーを作るためにアイデアを持っています私はちょうどそれを変更する必要があります)を変更する必要がありますこのような関数を作る:

val exec_query : query -> 'a List Deferred.t = <fun> 

しかし、私はこのsiを参照してください結果はcallbackに行毎に渡されますが、私の目的のために、私はオブジェクト(リスト、配列など)のいくつかの種類を持っている必要があると思う

val exec : db -> ?cb:(row -> headers -> unit) -> string -> Rc.t = <fun> 

を、私は考えている:exec関数のためgnatureこの関数からそれを作る方法。

誰かが進む方法を提案できますか?

+0

こんにちは@ SHI1485。あなたの質問は良好で、よく策定されています。あなたの英語力やこの質問の妥当性について控えめな理由はありません。このケースでは、イントロ(質問のあなたの動機)は不要です。 –

答えて

3

私はあなたがほしいと思うでしょうval exec_query : query -> row List Deferred.tSqlite3Asyncを知らないので、別のシステムスレッドの行のリストを返す呼び出しを実行したいとします。関数In_thread.run : (unit -> 'a) -> 'a Deferred.t(署名からオプションのargsが削除されました)がそのために使用する関数です。したがって、あなたは書かれている(テストされていない):

let exec_query db query = 
    let rows_of_query() = 
    let rows = ref [] in 
    let rc = Sqlite3.exec_no_headers db query 
       ~cb:(fun r -> rows := r :: !rows) in 
    (* Note: you want to use result to handle errors *) 
    !rows in 
    In_thread.run rows_of_query 
+0

また、コールバック中に結果を保存する例として 'rows_of_query'を使用することもできます。 – RichN

関連する問題