我很难理解如何让下面的代码结构工作。斯卡拉,类使用可变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