在Scala中,代数数据types被编码为sealed的一级types层次结构。 例: — Haskell data Positioning a = Append | AppendIf (a -> Bool) | Explicit ([a] -> [a]) // Scala sealed trait Positioning[A] case object Append extends Positioning[Nothing] case class AppendIf[A](condition: A => Boolean) extends Positioning[A] case class Explicit[A](f: Seq[A] => Seq[A]) extends Positioning[A] 对于case class和case object ,Scala会生成一堆类似equals , hashCode , unapply (被模式匹配使用)等等,它们带给我们许多传统ADT的关键属性和特性。 但是有一个关键的区别 […]