比方说,我在Scala中具有如下ADT:
sealed trait Animal
object Animal {
case class Lion(name: String) extends Animal
case class Elephant(name:String) extends Animal
case object Tiger extends Animal
}
[这里,最好将Tiger
声明为case对象,还是应该将其声明为空case类,即case class Tiger()
?一个人比其他人有什么优势吗?
Tiger
,则应为对象。如果可以有多个相等的Tiger
,则应为一个类。val tiger = Tiger()
val tiger1 = Tiger()
tiger == tiger1 // true
tiger eq tiger1 // false