在該代碼中,在B
參數a
距離A.a
Scala的:在擴展CLASSE重用參數名稱
class A(var a:String)
class B(a:String) extends A(a) {
println(a) // Use B.a
def p() {
println(a)
}
}
val b=new B("abc")
b.p() // "abc"
b.a="def"
b.p() // "abc" and not "def"
不同我可以在乙這樣重命名參數:
class B(_a:String) extends A(_a) {
println(_a) // Use B.a
def p() {
println(a)
}
}
但我想保留Scaladoc的名稱'a',以及與語法B(a="def")
的兼容性。 我如何解決這種情況?
訴諸構圖而不是繼承是否可行? – stefanobaghino
使類不可變將解決問題。它會迫使你'val res = b.copy(a =「def」)'。 (_a) –