在Elm中增加记录属性的最佳方法是什么?
让我们说,我有这样的简单模型 -
model : Model
model =
{ counter = 0 }
Run Code Online (Sandbox Code Playgroud)
如果我想更新这样的东西
update : Msg -> Model -> Model
update msg model =
case msg of
NoOp -> model
Increment -> { model | counter = model.counter + 1}
Run Code Online (Sandbox Code Playgroud)
现在,我知道我也可以把我的增量写成
Increment -> { model | counter = .counter model + 1 }
Run Code Online (Sandbox Code Playgroud)
但我想知道,如果有办法与此类似
Increment -> { model | counter += 1} || Increment -> { model | counter++ }
Run Code Online (Sandbox Code Playgroud)
甚至是这样的事情
Increment -> { model | counter = counter + 1 }
Run Code Online (Sandbox Code Playgroud)
对不起,如果这是一个愚蠢的问题,我只是从榆树开始,想要一些见解.
你的第一个例子可能是在Elm中最常用的例子:
{ model | counter = model.counter + 1}
Run Code Online (Sandbox Code Playgroud)
榆树没有+=或++像其他语言中的运营商一样.你经常会看到榆树故意选择保持语言语法较小,这些操作符可能会增加学习曲线并且还会引入混淆,因为它们在其他语言中的使用意味着突变,这在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
Run Code Online (Sandbox Code Playgroud)