0

我是scala新手,更新属性有问题。

我有一个继承自抽象类的类,如下所示:

abstract class A(x:type1,y:type1){
     val z:Option[type1]= None
     def void:type2 
} 

class B extends A(x,y){ 
     def this(x:type1,y:type1,z_:type1)= {this(x,y) val z=Some(z_)}
     def void:type2 = ??? 
}

如果我调用 new B(test,test,test)它,它不会更新z始终保留的值None

这种行为的原因是什么?

4

1 回答 1

0

使用 val 您可以创建不可变的字段/变量。在子类中声明另一个。如果要更新它,请在超类中使用 var,在子类中使用赋值。这应该有效:

abstract class A(x:type1,y:type1){
     var z:Option[type1]= None
     def void:type2 
} 

class B extends A(x,y){ 
     def this(x:type1,y:type1,z_:type1)= {this(x,y) z=Some(z_)}
     def void:type2 = ??? 
}
于 2013-03-17T06:33:24.573 回答