在别名记录中设置值

Setting values in aliased records

我刚开始使用 Elm,请多关照:)

"Random" example of the official Elm Guide 中,模型似乎是用值 1 初始化的,如下所示:

type alias Model =
  { dieFace : Int
  }


init : (Model, Cmd Msg)
init =
(Model 1, Cmd.none)

我的理解是代码

Model 1

设置记录中 dieFace 属性的值。这是正确的吗?如果是这样:设置记录属性的奇怪语法是什么?我会期待一些类似

的东西
{ model | dieFace = 1 }

Model 是记录的类型别名,它有一个名为 dieFace.

的单个 int 值

有几种方法可以创建该类型的值:

Model 1 -- treats Model as a function with a single parameter

{ dieFace = 1 } -- creates a record that happens to coincide with the Model alias

您在 { model | dieFace = 1 } 中看到的奇怪语法是基于现有记录值创建新值但更改一个或多个字段的简写。当您的记录类型只有一个字段时,它可能没有多大意义,所以让我们创建一个任意示例:

type alias ColoredDie = { dieFace: Int, color: String }

您可以在 Elm REPL 中玩耍,也许这有助于理解:

> blue3 = ColoredDie 3 "blue"
{ dieFace = 3, color = "blue" } : Repl.ColoredDie
> red3 = { blue3 | color = "red" }
{ dieFace = 3, color = "red" } : { dieFace : Int, color : String }
> red4 = { red3 | dieFace = 4 }
{ dieFace = 4, color = "red" } : { color : String, dieFace : number }
> green6 = { red4 | color = "green", dieFace = 6 }
{ dieFace = 6, color = "green" } : { color : String, dieFace : number }

你可以read up on Elm's record syntax here.