2017-08-21 13 views
3

私はFable-ElmishのmkSimpleとmkProgramの違い、または私が実際に使用しているElmish.WPFの違いを理解しようとしています。 (誰かがおそらくelmish.wpf用のタグをつくることができますか?)mkProgramはmkSimpleよりも多くの機能を公開していますか?

私はElmish.WPFが信じられないほど効果的であることを発見しました。私は生産で使っていますが、私はまだ多くを学んでいます毎日。この特別な質問は私の研究時間をあまりにも浪費しているので、私はいくつかの助けに感謝します。

ソースのコメントは次のようになります。

mkSimple:Simple program that produces only new state with 'init' and 'update'.

mkProgram:Typical program, new commands are produced by 'init' and 'update' along with the new state.

ので、これらのコマンドは、のために良い何ですか?私はいくつかの場所で例を見てきましたが、mkProgramと同じようにmkSimpleで同じことをすることができるかどうかは分かりませんが、それは私が知る必要があるものです。

mkProgramは、mkSimpleが使用できない機能を公開していますか、使用している機能をすべて使用できますか? mkSimpleは単純なデモ用ですが、実際のアプリケーションではmkProgramを使用するべきですか?両方ですべてを行うことができれば、違いは何ですか?

答えて

4

mkSimpleは実際に学習目的でのみ使用されます。 Cmdのアイデアをまだ導入していないため、新しいユーザーをフレームワークに簡単に組み込むことができます。

あなたがmkSimplesourceを見れば、あなたはそれがやっているすべては(Cmd.noneを使用して)Cmdアイデアを隠し、mkProgramを呼び出していることがわかります。

/// Simple program that produces only new state with `init` and `update`. 
let mkSimple 
    (init : 'arg -> 'model) 
    (update : 'msg -> 'model -> 'model) 
    (view : 'model -> Dispatch<'msg> -> 'view) = 
    { init = init >> fun state -> state,Cmd.none 
     update = fun msg -> update msg >> fun state -> state,Cmd.none 
     view = view 
     setState = fun model -> view model >> ignore 
     subscribe = fun _ -> Cmd.none 
     onError = onError } 

その起源はエルムからですその後、シンプルなプログラムの名前をbeginnerProgramに変更しました。

複雑なプログラムを作成する場合は、mkProgramを使用してください。単純に基本を試したりデモンストレーションしている場合は、mkSimpleを使用することができます。

+0

ありがとうございました。私は次の課題への答えがこれらのコマンドを悪用することにあると信じているので、私は大きな飛躍を遂げてきたと思います。今はmkProgramに切り替えて、そのすべての仕組みを学びます。 –

関連する問題