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

Bri*_*Hsu 12 enums scala

我正在尝试为Scala 实现Plurk API,但我有一个设计选择.

例如,Plurk用户的性别属性可以是"男性","女性","其他"之一.

sealed trait Gender
object Male extends Gender
object Female extends Gender
object Others extends Gender
Run Code Online (Sandbox Code Playgroud)

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

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

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

soc*_*soc 11

如果您不需要迭代您的Gender对象或需要类似next和的方法previous,那么类和对象是正确的解决方案.

如果你需要的"类和对象"和"scala.Enumeration"功能这个这个问题可能是你的兴趣.


Mar*_*sky 9

Enumeration在课数方面,使用也相当便宜.在Gender无关紧要的示例中,如果要通过具有100多个元素的枚举对处理器指令进行建模,则可能会开始变得重要.

  • 如果编译器警告缺少像密封特征这样的情况,那么"枚举"会更好. (2认同)