在 Elm 中更新 Maybe 记录
Updating a Maybe Record in Elm
我有一个应用程序,用户可以在其中创建项目。模型中的 currentProject
是一个 Maybe Project
类型,初始值设置为 Nothing
(因为该用户可能还没有创建任何项目)。
type alias Project =
{ name : String }
type alias Model =
{ user : User
, currentProject : Maybe Project
}
这是在 init
中的型号:
currentProject = Nothing
然后我有一个下拉菜单,用户可以在其中 select 一个项目。在 selecting 后,onClick
调用以下更新:
type Msg
= ...
| SetProject Project
我尝试 运行 的更新函数如下所示:
SetProject project ->
case project of
Just project ->
( { model | currentProject = project }, Cmd.none )
Nothing ->
( model, Cmd.none )
我得到一个错误,因为 project
的类型是 Project
而不是 Maybe Project
。
我知道该项目存在,因为它来自应用程序中的现有项目列表。但是,我无法将 currentProject
设置为键入 Project
,因为我需要使用 Nothing
.
初始化模型
那么,如何更新类型为 Project
的 Maybe Project
记录?
使用Just
构造函数:
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
您的消息说您需要一个项目类型,但是您正在对其进行模式匹配以检查它是否是(可能是项目),但事实并非如此。所以,要么在你的消息中传递一个 Maybe 项目,要么将你的更新函数更改为这个。
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
我有一个应用程序,用户可以在其中创建项目。模型中的 currentProject
是一个 Maybe Project
类型,初始值设置为 Nothing
(因为该用户可能还没有创建任何项目)。
type alias Project =
{ name : String }
type alias Model =
{ user : User
, currentProject : Maybe Project
}
这是在 init
中的型号:
currentProject = Nothing
然后我有一个下拉菜单,用户可以在其中 select 一个项目。在 selecting 后,onClick
调用以下更新:
type Msg
= ...
| SetProject Project
我尝试 运行 的更新函数如下所示:
SetProject project ->
case project of
Just project ->
( { model | currentProject = project }, Cmd.none )
Nothing ->
( model, Cmd.none )
我得到一个错误,因为 project
的类型是 Project
而不是 Maybe Project
。
我知道该项目存在,因为它来自应用程序中的现有项目列表。但是,我无法将 currentProject
设置为键入 Project
,因为我需要使用 Nothing
.
那么,如何更新类型为 Project
的 Maybe Project
记录?
使用Just
构造函数:
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
您的消息说您需要一个项目类型,但是您正在对其进行模式匹配以检查它是否是(可能是项目),但事实并非如此。所以,要么在你的消息中传递一个 Maybe 项目,要么将你的更新函数更改为这个。
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )