在定义ADT时应该声明案例对象T或案例类T()吗?

问题描述 投票:1回答:1

比方说,我在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()?一个人比其他人有什么优势吗?

scala singleton algebraic-data-types
1个回答
2
投票
如果只有Tiger,则应为对象。如果可以有多个相等的Tiger,则应为一个类。

val tiger = Tiger() val tiger1 = Tiger() tiger == tiger1 // true tiger eq tiger1 // false

© www.soinside.com 2019 - 2024. All rights reserved.