增加榆树的记录属性

时间:2017-08-01 15:44:32

标签: elm

在Elm中增加记录属性的最佳方法是什么?

让我们说,我有这样的简单模型 -

model : Model
model =
    { counter = 0 }

如果我想更新类似的东西

update : Msg -> Model -> Model
update msg model =
  case msg of
    NoOp -> model
    Increment -> { model | counter = model.counter + 1}

现在,我知道我也可以将我的增量写为

Increment -> { model | counter = .counter model + 1 }

但我想知道,如果有办法与此类似地做到这一点

Increment -> { model | counter += 1} || Increment -> { model | counter++ }

甚至是这样的

Increment -> { model | counter = counter + 1 }

很抱歉,如果这是一个愚蠢的问题,我只是从榆树开始,并希望得到一些见解。

1 个答案:

答案 0 :(得分:6)

你的第一个例子可能是在Elm中最惯用的方式:

{ model | counter = model.counter + 1}

Elm中没有+=++运算符,就像其他语言一样。你会经常看到榆树故意选择保持语言语法较小,这些操作符可能会增加学习曲线,并且还会引入混淆,因为它们在其他语言中的使用意味着突变,这在榆树中是不存在的。

{ model | counter = .counter model + 1 }示例有效但您通常只在将记录字段用作函数时将其用作getter,就像在映射中一样。

-- This example would map a list of counter values from a list of models
List.map .counter models