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