在Elm中更新Maybe记录
我有一个用户可以创建项目的应用程序。模型中的在Elm中更新Maybe记录,elm,Elm,我有一个用户可以创建项目的应用程序。模型中的currentProject是一种可能项目类型,初始值设置为Nothing(因为该用户可能尚未创建任何项目) 这在模型的init中: currentProject=Nothing 然后我有一个下拉列表,用户可以在其中选择一个项目。选择后,onClick调用以下更新: type Msg = ... | SetProject Project 我尝试运行的更新函数如下所示: SetProject project -> case
currentProject
是一种可能项目
类型,初始值设置为Nothing
(因为该用户可能尚未创建任何项目)
这在模型的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
类型,而不是可能是project
我知道该项目存在,因为它来自应用程序中现有的项目列表。但是,我无法将currentProject
设置为typeProject
,因为我需要使用无任何内容来初始化模型
那么,如何使用类型Project
更新Maybe Project
记录?使用构造函数:
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
您的消息说您需要一个项目类型,但是您正在对它进行模式匹配,以检查它是否是(可能是项目),但它不是。所以,要么在msg中传入一个Maybe项目,要么将更新函数更改为this
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )
谢谢你的回复!我仍然收到一个编译器错误,说Just project
模式匹配类型可能是a
,但它试图匹配的值是project
。你的意思是代替case表达式吗?没关系,我去掉了case表达式,这就行了。谢谢是的,我只是更新了我的答案来反映这一点。原因是,SetProject
没有按照Maybe
SetProject project ->
( { model | currentProject = Just project }, Cmd.none )