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)更新されません。zNone

この動作の理由は何ですか?

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 に答える