繁体   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