在 Elm 中更新 Maybe 记录

Jus*_*tin 3 elm

我有一个应用程序,用户可以在其中创建项目。该currentProject模型中的一个是Maybe Project与初始值设置为类型Nothing(因为可能不存在该用户尚未创建项目)。

type alias Project =
    { name : String }

type alias Model =
    { user : User
    , currentProject : Maybe Project
    }
Run Code Online (Sandbox Code Playgroud)

这是在init模型中:

currentProject = Nothing

然后我有一个下拉菜单,用户可以在其中选择一个项目。选择它后会onClick调用以下更新:

type Msg
    = ...
    | SetProject Project
Run Code Online (Sandbox Code Playgroud)

我尝试运行的更新功能如下所示:

SetProject project ->
    case project of
       Just project ->
         ( { model | currentProject = project }, Cmd.none )

       Nothing ->
         ( model, Cmd.none )
Run Code Online (Sandbox Code Playgroud)

我收到错误,因为project是类型Project而不是Maybe Project

我知道该项目存在,因为它来自应用程序中的现有项目列表。但是,我无法设置currentProject为输入,Project因为我需要使用Nothing.

那么,如何Maybe Project使用 type更新记录Project

Cha*_*ert 5

使用Just构造函数:

SetProject project ->
     ( { model | currentProject = Just project }, Cmd.none )
Run Code Online (Sandbox Code Playgroud)