我有一个用户可以创建项目的应用程序。模型中的currentProject
是Maybe Project
类型,初始值设置为Nothing
(因为该用户可能尚未创建任何项目)。
type alias Project =
{ name : String }
type alias Model =
{ user : User
, currentProject : Maybe Project
}
这是模型的init
:
currentProject = Nothing
然后我有一个用户可以选择项目的下拉列表。选择后,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
初始化模型。
那么,如何使用Maybe Project
类型更新Project
记录?
答案 0 :(得分:4)
使用Just
构造函数:
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
答案 1 :(得分:3)
你的消息说你期待一个项目类型,但是你在它上面进行模式匹配以检查它是否是一个(可能是项目),但它不是。因此,要么在msg中传递一个Maybe Project,要么将更新功能更改为此。
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )