5
我試圖修改elm-lang tutorial中的一個簡單應用程序以首先更新模型,然後觸發另一個更新。Elm - 將Msg轉爲Cmd Msg
update msg model =
case msg of
MorePlease ->
(model, getRandomGif model.topic)
NewGif (Ok newUrl) ->
({ model | gifUrl = newUrl }, Cmd.none)
NewGif (Err _) ->
(model, Cmd.none)
-- my addition
NewTopic newTopic ->
({ model | topic = newTopic}, MorePlease)
這失敗的編譯器,因爲NewTopic分支:
The 3rd branch has this type:
({ gifUrl : String, topic : String }, Cmd Msg)
But the 4th is:
({ gifUrl : String, topic : String }, Msg)
所以我的消息必須鍵入Cmd消息。我怎樣才能把」我的消息成一個cmd消息
注:我承認有一個簡單的方式,這種改變的方式,但我想了解更多榆樹根本
謝謝。這是解決問題的一種更簡單的方法。我仍然想知道,我是否需要將「Msg」「投射」到「Cmd Msg」?如果我做了我會怎麼樣? – steel
我用一個例子更新了我的答案 –
@ChadGilbert:你能詳細闡述一下爲什麼你不會推薦新的'Msg'來推薦第二種方法嗎? – DanEEStar