它不能用 params 初始化,它只会与自身进行比较(单例)。所以它的equals和hash code函数没有优势。有没有人遇到过他们觉得有用的案例?
最佳答案
您可以使用 case 对象作为枚举的替代方法。
详情请见:Case objects vs Enumerations in Scala
该问题的一个简化示例:
sealed trait Currency {
def name: String
def symbol: String
}
case object EUR extends Currency {
val name = "EUR"
val symbol = "€"
}
case object USD extends Currency {
val name = "USD"
val symbol = "$"
}
好处
Enumeration
中的 ID 和名称相比)sealed
类型层次结构的情况下)。 所以这段代码
val ccy: Currency = EUR
ccy match {
case EUR =>
println("Euro")
}
会导致
Warning:(27, 7) match may not be exhaustive.
It would fail on the following inputs: USD
ccy match {
缺点
Enumeration
提供 withName()
)关于scala - 为什么 Scala 有一个 case 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32602356/