簡體   English   中英

為什么scala不允許在trait中定義lazy val?

[英]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
   }

然后我在MyTraitMyTrait了編譯錯誤。 我想知道為什么scala不允許我們在特性中定義lazy val 我們如何在特質中定義lazy val

懶惰的特質沒有意義。 lazy表示僅在調用時計算值。

當你想要訪問something的值時,不會MyTrait.something ,而是在類中擴展特性的屬性。 在你的情況下SomeThing.something

你可以在擴展課程中保持lazy

特征只定義了必要的變量 - 需要重寫的函數

暫無
暫無

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

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