派生的Scala案例类,具有相同的成员变量作为基础

时间:2010-01-13 17:28:06

标签: scala

有没有更好的方法呢?

scala> case class A(x : Int)
defined class A

scala> case class B(override val x : Int, y : Int) extends A(x)
defined class B

我用B扩展A并添加一个额外的成员变量。不必在x之前写override val

1 个答案:

答案 0 :(得分:15)

我强烈建议不要从案例类继承。它对equals和hashCode产生了惊人的影响,并且在Scala 2.8中已被弃用。

相反,在特征或抽象类中定义x

scala> trait A { val x: Int }
defined trait A

scala> case class B(val x: Int, y: Int) extends A
defined class B

http://www.scala-lang.org/node/3289

http://www.scala-lang.org/node/1582