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