在 Elm 中递增记录 属性
Incrementing record property in 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 }
抱歉,如果这是一个愚蠢的问题,我刚开始使用 Elm,想了解一些信息。
您的第一个示例可能是在 Elm 中最惯用的方式:
{ model | counter = model.counter + 1}
与其他语言不同,Elm 中没有 +=
或 ++
运算符。您经常会看到 Elm 故意选择保持语言语法小,并且这些运算符可以说会增加学习曲线并且还可能引起混淆,因为它们在其他语言中的使用意味着突变,这在 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
在 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 }
抱歉,如果这是一个愚蠢的问题,我刚开始使用 Elm,想了解一些信息。
您的第一个示例可能是在 Elm 中最惯用的方式:
{ model | counter = model.counter + 1}
与其他语言不同,Elm 中没有 +=
或 ++
运算符。您经常会看到 Elm 故意选择保持语言语法小,并且这些运算符可以说会增加学习曲线并且还可能引起混淆,因为它们在其他语言中的使用意味着突变,这在 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