我很難理解如何讓下面的代碼結構工作。斯卡拉,類使用可變var,更新覆蓋方法
在Scala中我有一個類MyClass
從SomeClass
繼承我加在這種情況下var
成員變量稱爲mutableArray
和它在重寫方法overridingSomeClassMethod
被更新,並且當我創建MyClass
一個數的新實例被稱爲的時間。但在main
當我嘗試並獲取更新的mutableArray
變量時,它將打印出實例化的var
,就好像它不可變或只在覆蓋方法中具有範圍一樣。
我不能改變父母SomeClass
中的方法,並且我嘗試創建伴隨對象以及將該變量放在包含SomeOtherObject
中,但我得到了同樣的問題。
import scala.collection.mutable.ArrayBuffer
object SomeOtherObject{
case MyClass(...) extends SomeClass(..){
var mutableArray: ArrayBuffer[Int] = ArrayBuffer.fill(5)(0)
def overridingSomeClassMethod(...){
var someReturnVar = 0.0
mutableArray(0) += 1
println(mutableArray.mkString) // last output -> 84169
someReturnVar
}
}
def main(args: Array[String]){
var mc = new MyClass
println(mc.mutableArray.mkString) // output -> 00000
}
}
我想這一點,但由於「高清overridingSomeClassMethod 「我得到以下錯誤」早期對象初始化部分中只允許使用具體的字段定義「,我假設在子類實例化後,我不需要任何其他選項來創建一個方法來運行? – h1vpdata
適用於我:http://scastie.org/12697。請注意'def overridingSomeClassMethod'不在早期的初始化部分。 –
您的代碼編譯並運行,我相信我非常密切地關注它,我也從2.10.5升級到2.11.4(這是我可以升級到最高級別而無需破壞構建),但它仍然無法工作。如果這是真的(@亞歷克斯,如果你可以確認),比我認爲問題已解決? – h1vpdata