假设我有这样的sealed class
层次结构:
sealed class A {
abstract val x: Int
abstract fun copyX(x1: Int): A
}
data class A1(override val x: Int, val s1: String) : A() {
override fun copyX(x1: Int): A {
return this.copy(x = x1)
}
}
data class A2(override val x: Int, val s2: String) : A() {
override fun copyX(x1: Int): A {
return this.copy(x = x1)
}
}
所有数据类都有字段x
,并且应该提供copyX(x1: Int)
复制所有字段的方法,但x
并x
用x1
. 例如,
fun foo(a: A): A { a.copyX(100) }
上面的定义可能有效,但copyX
所有数据类的重复似乎非常笨拙。你会如何建议摆脱这种重复copyX
?