How to deep copy classes with traits mixed in
问题 Here's some sample scala code. abstract class A(val x: Any) { abstract def copy(): A } class b(i: Int) extends A(i) { override def copy() = new B(x) } class C(s: String) extends A(s) { override def copy() = new C(x) } //here's the tricky part Trait t1 extends A { var printCount = 0 def print = { printCount = printCount + 1 println(x) } override def copy = ??? } Trait t2 extends A { var doubleCount = 0 def doubleIt = { doubleCount = doubleCount + 1 x = x+x } override def copy = ??? } val q1 =