我是 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
的{{1}}的值。
这种行为的原因是什么?
答案 0 :(得分: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 = ???
}