Ben*_*erg 7 f# fable-f# elmish
我试图理解fable-Elmish中mkSimple和mkProgram之间的区别,或者我实际使用的Elmish.WPF.(有人可能会为elmish.wpf生成一个标签吗?)
我发现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.
那些命令有什么用呢?我已经在几个地方看了一些例子,但他们并没有提供很多线索,我是否可以使用mkSimple和mkProgram一样,这就是我需要知道的.
mkProgram是否暴露了mkSimple没有的功能,或者无论我使用哪一个都能完成所有功能?mkSimple仅用于简单的演示使用吗?我应该将mkProgram用于增长的真实世界应用程序吗?如果你能同时做到这两点,那为什么会有区别?
mkSimple实际上只是为了学习目的.它通过不引入现有的想法,帮助新用户进入框架Cmd.
如果你看一下源的mkSimple,你会看到,所有它做的是隐藏的Cmd想法(通过Cmd.none),并调用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 }
Run Code Online (Sandbox Code Playgroud)
它的起源来自Elm Architecture,后来将简单的程序重命名为beginnerProgram.
如果您想要编写任何复杂程序,请使用mkProgram.如果您只是修补或演示基础知识,您可以使用mkSimple.