1
至於榆樹學習的榜樣,我想創建一個簡單的蛇遊戲與榆樹架構。如何「生成」,在簡單的應用程序自己的命令
這裏是迄今全碼: https://gist.github.com/DanEEStar/b11509514d72eaafb640378fc7c93b44
的程序的一部分是被通過按鈕點擊和updateWorld
函數被稱爲當用戶按下空格鍵產生的UpdateWorld
消息。
這將導致如下的編譯和運行的代碼(片段形成的完整代碼):
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
UpdateWorld ->
(updateWorld model, Cmd.none)
KeyPress keyCode ->
(handleInput keyCode model, Cmd.none)
handleInput : Int -> Model -> Model
handleInput keyCode model =
case Char.fromCode keyCode of
' ' ->
updateWorld model
_ ->
model
updateWorld : Model -> Model
updateWorld model =
{ model | snake = updateSnake model.snake }
subscriptions : Model -> Sub Msg
subscriptions model =
Keyboard.presses KeyPress
view : Model -> Html Msg
view model =
div []
-- here I can simply tell `onClick` to generate the `UpdateWorld` command
[ button [ onClick UpdateWorld ] [ text "tick" ]
]
在此代碼段是很清楚,onClick
事件產生UpdateWorld
命令。 但是在handleInput
函數中我必須「手動」調用updateWorld
函數。
我寧願做的是從我的handleInput
函數中「生成」一個新的UpdateWorld
命令。我認爲這會澄清代碼。例如:
handleInput keyCode =
case Char.fromCode keyCode of
' ' ->
-- how can I generate this command in my code
UpdateWorld
我該怎麼做?
這甚至是一個好主意,或者這將是一個更好的模式?
感謝,這正是解決我的問題。我正在看錯了角落。 – DanEEStar
我必須拿掉驗收標誌。在思考了一些關於這個問題後,我仍然對原始問題感興趣...... – DanEEStar
我偶然發現了你的這個答案:https://stackoverflow.com/a/42703561/669561。 這似乎是我有同樣的問題?! – DanEEStar