[英]why scala don't allow define lazy val in trait?
我嘗試用lazy val
定義一個特征
trait MyTrait {
lazy val something: Int
}
object SomeThing extends MyTrait {
override lazy val something: Int = 42
}
然后我在MyTrait
中MyTrait
了編譯錯誤。 我想知道為什么scala不允許我們在特性中定義lazy val
? 我們如何在特質中定義lazy val
?
懶惰的特質沒有意義。 lazy
表示僅在調用時計算值。
當你想要訪問something
的值時,不會MyTrait.something
,而是在類中擴展特性的屬性。 在你的情況下SomeThing.something
。
你可以在擴展課程中保持lazy
。
特征只定義了必要的變量 - 需要重寫的函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.