榆树速记符号

时间:2019-05-15 20:27:42

标签: elm

为了更好地使用JavaScript进行函数编程,我开始学习Elm。

在JavaScript中,您具有对象缩写符号:

type alias Model =
    { title : String
    , description : String
    , tag : String
    , tags : List String
    , notes : List Note
    }


type alias Note =
    { title : String
    , description : String
    , tags : List String
    }

我想知道榆木中是否有类似的东西?我问是因为我有以下模型:

update

还有一个AddNote函数,该函数在接收到AddNote -> { model | notes = model.notes ++ [ { title = model.title, description = model.description, tags = model.tags } ], title = "", description = "", tag = "" } 操作后会将注释添加到notes数组并清除输入:

AddNote ->
    { model | notes = model.notes ++ [ getNote model ], title = "", description = "", tag = "" }


getNote : Model -> Note
getNote { title, description, tags } =
    { title = title, description = description, tags = tags }

我知道您可以在函数定义中“分解”记录,但我认为即使在返回类型中,我也必须明确键入记录的每个键。

{{1}}

1 个答案:

答案 0 :(得分:7)

没有类似于JavaScript对象的速记记录符号。

但是,类型别名也可以用作构造函数,因此您可能会遇到以下情况:

getNote : Model -> Note
getNote { title, description, tags } =
    Note title description tags