type alias Model =
{ dieFace : Int
}
init : (Model, Cmd Msg)
init =
(Model 1, Cmd.none)
Run Code Online (Sandbox Code Playgroud)
为什么整数1传递给模型ala Model 1?
类型别名似乎需要记录?
在Elm中没有那么多未解释的魔法(有充分理由),但有一点是类型和类型别名构造函数.每当您创建一个类型(别名)时,您都可以免费获得构造函数.所以,要使用你的例子,
type alias Model =
{ dieFace : Int
}
Run Code Online (Sandbox Code Playgroud)
给你一个(有点奇怪的)构造函数
Model : Int -> Model
Run Code Online (Sandbox Code Playgroud)
免费.如果您在记录中添加更多条目,请执行此操作
type alias Model =
{ dieFace : Int
, somethingElse : String
}
Run Code Online (Sandbox Code Playgroud)
构造函数需要更多参数.
Model : Int -> String -> Model
Run Code Online (Sandbox Code Playgroud)
这些顺序与记录条目的顺序相同,因此如果更改类型别名的顺序,则必须将参数顺序更改为构造函数.
联盟类型以类似的方式工作.
type Shape
= Circle Int
| Square Int Int
Run Code Online (Sandbox Code Playgroud)
悄悄地创建构造函数:
Circle: Int -> Shape
Square : Int -> Int -> Shape
Run Code Online (Sandbox Code Playgroud)