我想知道是否有可能抽象出案例类的复制方法.基本上我有类似的东西sealed trait Op,然后像case class Push(value: Int) extends Op和case class Pop() extends Op.
第一个问题:没有参数/成员的案例类没有定义复制方法.你可以在REPL中试试这个.
scala> case class Foo()
defined class Foo
scala> Foo().copy()
<console>:8: error: value copy is not a member of Foo
Foo().copy()
^
scala> case class Foo(x: Int)
defined class Foo
scala> Foo(0).copy()
res1: Foo = Foo(0)
Run Code Online (Sandbox Code Playgroud)
编译器出现此异常的原因是什么?我认为它是相当单一的,我希望每个案例类都定义一个复制方法.
第二个问题:我有一个方法def ops: List[Op],我想复制所有的操作ops map { _.copy() }.我如何在Op特征中定义复制方法?如果我说的话,我会收到"太多参数"的错误def copy(): Op.但是,由于所有copy()方法都只有可选参数:为什么这不正确?而且,我该怎么做呢?通过为所有案例类创建另一个为所有案例类命名def clone(): Op和写入的方法def clone() …