无法使用重复参数复制案例类

时间:2017-03-29 11:25:28

标签: scala

为什么我不能使用重复参数的案例类的复制方法?

例如,为什么这段代码的最后一行会给我错误?

case class A(i: Int)
case class B(i: Int*)

val a = A(1).copy(i = 2)
val b1 = B(i = Seq(4, 5): _*)
val b2 = B(2, 3).copy(i = Seq(4, 5): _*)
  

值复制不是B

的成员

1 个答案:

答案 0 :(得分:9)

根据scala specs,编译器不会为具有重复参数的案例类生成copy方法。

  

将一个名为copy的方法隐式添加到每个case类中,除非该类已经有一个具有该名称的成员(直接定义或继承),或者该类具有重复的参数。