簡體   English   中英

Scala:如何更新超類屬性

[英]scala: how to update super class attributes

我是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的值,而z始終保持None

這種行為的原因是什么?

使用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 = ??? 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM