考慮一個代碼段重用變量在派生類中:斯卡拉
trait MyTrait{
val x: Int = 0
}
case class MyClass(y: Int = 1, z: Int = 2) extends MyTrait
//script starts now
val myClass = MyClass(3,4)
myClass.copy(x, 5)
爲什麼這個不行?它說未定義的變量x。我知道它可以寫成像
case class MyClass(override val x:Int = 0, y: Int = 1, z: Int = 2) extends MyTrait
但我想知道爲什麼我不能只使用默認值?
編輯
在這種情況下是不可能設置MyTrait的x變量?
請註明原因downvoting問題,這樣我可能會在未來在其改善。 – Sohaib
'myClass.copy(x,5)'你期待這樣做?複製並將x設置爲5?現在,如果範圍內有一個x,它會將y設置爲x的值,z設置爲5. –
@Paul是的,這是意圖。我只是學習Scala。那麼由於這種設計,我們現在無法真正設置x? – Sohaib