在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 }
很抱歉,如果这是一个愚蠢的问题,我只是从榆树开始,并希望得到一些见解。
答案 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