鉴于以下Algebraic Data Type:
scala> sealed trait Person
defined trait Person
scala> case class Boy(name: String, age: Int, x: String) extends Person
defined class Boy
scala> case class Girl(name: String, age: Int, y: Boolean) extends Person
defined class Girl
注意 - 我知道它不是递归类型 - 不涉及递归。
那么,这是Sum
还是Product Type
?为什么呢?
答案 0 :(得分:1)
在这种情况下,Person
可被视为求和类型,因为它的一个实例是Boy
或Girl
。
Boy
(或Girl
)是一种产品类型,因为Boy
的实例是类型String
,Int
和{{1 }}。
关于此“混合”案例Algebraic Data Types in Scala
,这是一篇非常不错的文章