总和或产品类型?

时间:2015-06-10 15:57:19

标签: scala algebraic-data-types

鉴于以下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?为什么呢?

1 个答案:

答案 0 :(得分:1)

在这种情况下,Person可被视为求和类型,因为它的一个实例是BoyGirl

Boy(或Girl)是一种产品类型,因为Boy的实例是类型StringInt和{{1 }}。

关于此“混合”案例Algebraic Data Types in Scala

,这是一篇非常不错的文章