我正在尝试了解Elm语言,并且在处理我的小应用程序的更新部分时遇到了一些问题。
实际上,当我点击一个按钮时,我希望它将一个新用户添加到列表中,这是一件非常简单且没有任何意义的事情,但我需要理解。
现在,我的代码如下:
main =
Html.beginnerProgram { model = model, view = view, update = update }
type Msg = AddUser
type alias User =
{
username : String,
firstname: String,
lastname: String
}
model: List User
model =
[]
update: Msg -> User -> List User -> List User
update msg user userList =
case msg of
AddUser ->
user::userList
我遇到了以下错误:
-- TYPE MISMATCH ------------------------------------------------------ main.elm
The argument to function `beginnerProgram` is causing a mismatch.
5| Html.beginnerProgram { model = model, view = view, update = update }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Function `beginnerProgram` is expecting the argument to be:
{ ..., update : Msg -> List User -> List User }
But it is:
{ ..., update : Msg -> User -> List User -> List User }
Hint: Problem in the `update` field. I always figure out field types in
alphabetical order. If a field seems fine, I assume it is "correct" in
subsequent checks. So the problem may actually be a weird interaction with
previous fields.
实际上,我目前从更新函数中理解的是:
- 在第一个函数中接收一条消息,返回一个接受用户的函数
- 该函数(接受用户)返回一个接受用户列表的函数(使操作 user::userList)
- 最后一个函数返回一个用户列表,然后就完成了
但是我无法确定自己在这种情况下错在哪里。
你能帮我吗?