【发布时间】:2015-06-10 15:57:19
【问题描述】:
鉴于以下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?为什么?
【问题讨论】:
-
两者——这是产品的总和。 Wikipedia entry on ADTs 可能是一个很好的起点。
-
另请注意,它可能是递归的,但仍然是乘积的总和。
-
@TravisBrown:您应该将其发布为答案。
-
@TravisBrown -
case object或case class与单个参数组成 Scala 中的Sum Type类? -
@KevinMeredith 您可以将 sum 视为“或”——在此模型中,
Person是Boy或Girl。 "and" 是产品——Boy数据类型由名称和年龄和字符串x组成。
标签: scala algebraic-data-types