为什么我不能使用重复参数的案例类的复制方法?
例如,为什么这段代码的最后一行会给我错误?
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
的成员
答案 0 :(得分:9)
根据scala specs,编译器不会为具有重复参数的案例类生成copy
方法。
将一个名为copy的方法隐式添加到每个case类中,除非该类已经有一个具有该名称的成员(直接定义或继承),或者该类具有重复的参数。