相关疑难解决方法(0)

Case类的copy()方法抽象

我想知道是否有可能抽象出案例类的复制方法.基本上我有类似的东西sealed trait Op,然后像case class Push(value: Int) extends Opcase 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() …

scala copy

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

copy ×1

scala ×1