如何在 elm 中列出某个类型定义

how to list out a certain type definition in elm

type alias Employee =
    { role : Role, name : String }


type Role
    = Engineer
    | Manager
    | Sales
    | Accounting
    | Hr


generateSample =
    Role.all |> List.map createModelWithType

我需要完成 Role.all,在这种情况下甚至 Role 都无法访问。完成此任务的最佳方式/替代方式是什么。

没有自动列出一个类型的所有构造函数的方法。您可以像这样构建一个列表:

allRoles : List Role
allRoles =
    [ Engineer
    , Manager
    , Sales
    , Accounting
    , Hr
    ]

Elm中没有类似其他语言的简单枚举的概念。类型构造函数也可以有参数,这可能有助于理解为什么没有内置的方法来枚举构造函数列表。

选择类型时有很多注意事项。这取决于将对数据使用什么行为。也许在您学习的过程中,您可以简单地选择一种有效且看起来足够简单的数据类型。有了经验,您会发现选择一种类型的优势。

为了在为不同问题选择类型时的思维方式上获得更多启发,您可能需要查看此演示文稿:https://www.youtube.com/watch?v=XpDsk374LDE 演示中有两个主题混合在一起,其中之一是如何为不同的行为选择类型。

这是一种方法:

type Alias Role = 
     { Engineer : Bool
     , Manager : Bool
     , Sales : Bool
     , Accounting : Bool
     , Hr : Bool
     }