elm - 在 Elm 中更新 Maybe 记录

标签 elm

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

type alias Project =
    { name : String }

type alias Model =
    { user : User
    , currentProject : Maybe Project
    }

这位于模型的 init 中:

当前项目=无

然后我有一个下拉菜单,用户可以在其中选择一个项目。选择它后,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 初始化模型。

那么,如何更新类型为 ProjectMaybe Project 记录?

最佳答案

使用Just构造函数:

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

关于elm - 在 Elm 中更新 Maybe 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48452871/

相关文章:

elm - 与 Elm 记录类型的 `.foo` getter 匹配的等效 setter

elm - 如何在 Elm 中压缩形状奇特的列表?

html - Elm中段落的宽度

elm - 函数名称等中允许使用哪些字符?

elm - 在 Elm 中定义嵌套或递归列表结构

Elm 找不到依赖项中的模块

elm - 在 Elm 中实现我自己的 toString 的正确方法是什么

elm - 如何退出榆树REPL?

json - Elm:如何从JSON API解码数据

javascript - Elm - 防止默认订阅