在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
设置为type
Project
,因为我需要使用
无任何内容来初始化模型

那么,如何使用类型
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 )