type alias Model =
{ dieFace : Int
}
init : (Model, Cmd Msg)
init =
(Model 1, Cmd.none)
为什么整数1
会传递给模型ala Model 1
?
类型别名似乎需要记录?
答案 0 :(得分:7)
在Elm中没有那么多未解释的魔法(有充分的理由),但有一点是类型和类型别名构造函数。每当您创建一个类型(别名)时,您都可以免费获得构造函数。所以,要使用你的例子,
var saveWorkOrderViewModel = {
workOrderId: workorderId,
DelayReasons[0].DelayReasonId: xxxx,
DelayReasons[1].DelayReasonId: xxxx,
....
};
给你一个(有点奇怪的)构造函数
type alias Model =
{ dieFace : Int
}
免费。如果您在记录中添加更多条目,例如
Model : Int -> Model
构造函数需要更多参数。
type alias Model =
{ dieFace : Int
, somethingElse : String
}
这些顺序与记录条目的顺序相同,因此如果更改类型别名的顺序,则必须将参数顺序更改为构造函数。
联盟类型以类似的方式工作。
Model : Int -> String -> Model
悄悄地创建构造函数:
type Shape
= Circle Int
| Square Int Int
答案 1 :(得分:3)
在Model 1
"模型"用作位置记录构造函数。它等于{dieFace = 1}
这是另一个例子:
type alias Rcd =
{ first : String
, second : Int
}
Rcd可以用两种方式构建:
Rcd "some string" 4
{ first = "some string" , second = 4}
前一种变体只是简写,通常用于记录的初始化。