type alias Employee =
{ role : Role, name : String }
type Role
= Engineer
| Manager
| Sales
| Accounting
| Hr
generateSample =
Role.all |> List.map createModelWithType
我需要完成Role.all
,在这种情况下即使Role
也无法访问。什么是实现/替代表达方式的最佳方式。
答案 0 :(得分:7)
没有自动方法列出类型的所有构造函数。你可以建立一个这样的列表:
allRoles : List Role
allRoles =
[ Engineer
, Manager
, Sales
, Accounting
, Hr
]
在Elm中,没有类似于其他语言的简单枚举的概念。类型构造函数也可以有参数,这可能有助于理解为什么没有内置的方法来枚举构造函数列表。
答案 1 :(得分:2)
选择类型时需要考虑许多因素。这取决于将与数据一起使用的行为。也许正如您所知,您可以简单地选择一种有效的数据类型,并且看起来很简单。根据经验,您将看到选择一种类型优于另一种类型的优势。
为了更好地思考为不同问题选择类型的方式,您可能需要查看此演示文稿:https://www.youtube.com/watch?v=XpDsk374LDE 演示文稿中混合了两个主题,其中一个是如何为不同的行为选择类型。
这是一种方法:
type Alias Role =
{ Engineer : Bool
, Manager : Bool
, Sales : Bool
, Accounting : Bool
, Hr : Bool
}