我应该更喜欢Scala中的密封类或枚举吗?

时间:2010-11-21 03:18:39

标签: scala enums

我正在尝试为Scala实施Plurk API招标,但我有一个设计选择。

例如,Plurk用户的性别属性可以是“男性”,“女性”,“其他”之一。

sealed trait Gender
object Male extends Gender
object Female extends Gender
object Others extends Gender

问题是我应该像上面的代码示例那样更喜欢密封的类/对象,而不是Enumeration来表示枚举类型?

因为我发现当我使用其他Scala库时很少遇到Enumeration,并且许多Actor教程使用密封的类/对象来表示Actor的消息。

这是否意味着在Scala中,密封类是比Enumeration更好/更传统的选择?

2 个答案:

答案 0 :(得分:11)

如果您不需要迭代性别对象或需要nextprevious等方法,那么类和对象就是正确的解决方案。

如果您需要“类和对象”以及“scala.Enumeration”thisthis问题的功能,您可能会感兴趣。

答案 1 :(得分:9)

使用Enumeration在课数方面也要便宜一些。在Gender示例中无关紧要,但如果您想通过包含100多个元素的枚举对处理器指令进行建模,则可能会开始变得重要。