我是Scala的新手,无法找到实现我想要的方法。 我想在父类中使用抽象方法,如此
def copy():M
然后在每个子类中,此方法应具有不同数量的参数,如
def copy(id: Int, title: String):M
现在我尝试
override def copy(id: Int, title: String):M
我有编译错误
方法复制不会覆盖任何内容
答案 0 :(得分:1)
如果您的参数类型相同,您可以像这样编写方法签名
def copy(args: SomeType*):M
如果没有,您可以使用抽象类型
trait T {
type CopyParam
def copy(c: CopyParam): T
}
case class SomeCopyParam(i: Int, s: String)
class A extends T {
type CopyParam = SomeCopyParam
def copy(c: SomeCopyParam): A = {
println(c.i + c.s)
this // some changed copy should be here
}
}
并像这样使用它:
val original = new A()
val copy = original.copy(SomeCopyParam(1, "a"))