Próbuję zmodyfikować prostą aplikację z elm-lang tutorial, aby najpierw zaktualizować model, a następnie uruchomić inną aktualizację.Elm - Włącz Msg w 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)
ta zawodzi w kompilator, ponieważ oddział nowytemat:
The 3rd branch has this type:
({ gifUrl : String, topic : String }, Cmd Msg)
But the 4th is:
({ gifUrl : String, topic : String }, Msg)
Więc moja Msg musi być typu Cmd Msg. Jak mogę włączyć”mój błędzie w Cmd Msg
notatka: uznaję istnieje prostszy sposób, aby dokonać tej zmiany, ale staram się zrozumieć Elm bardziej fundamentalnie
Dziękuję Ci. Jest to łatwiejszy sposób rozwiązania problemu. Nadal zastanawiam się, czy kiedykolwiek będę musiał "rzucić" Msg na "Cmd Msg"? I jak bym to zrobił, gdybym to zrobił? – steel
Zaktualizowałem swoją odpowiedź na przykładzie: –
@ChadGilbert: Czy mógłbyś nieco więcej wyjaśnić, dlaczego nie poleciłbyś drugiej metody, uruchamiając nowe 'Msg'? – DanEEStar