案例类扩展特征不适用于副本

Pau*_*per 5 inheritance scala traits

我试试

trait Foo[A] {
  def copy(int: Int): A
}

case class Bar(int: Int) extends Foo[Bar]
Run Code Online (Sandbox Code Playgroud)

但我明白了

错误:类Bar需要是抽象的,因为类型为(int:Int)的trait Foo中的方法复制this.Bar未定义

由于Bar是一个案例类,它会自动定义一个copy具有该签名的方法.

为什么Foo类不满足特征定义的接口Bar

ial*_*eev 5

我引用了Scala的规范:

除非该类已具有具有该名称的成员(直接定义或继承),或者该类具有重复参数,否则将隐式地向每个案例类添加名为copy的方法.