gpt4 book ai didi

scala - 为什么 Scala 不允许在 trait 中定义惰性 val?

转载 作者:行者123 更新时间:2023-12-05 00:10:49 24 4
gpt4 key购买 nike

我尝试用 lazy val 定义一个特征

   trait MyTrait {
lazy val something: Int
}

object SomeThing extends MyTrait {
override lazy val something: Int = 42
}


然后我在 MyTrait 中得到编译错误.我想知道为什么 Scala 不允许我们定义 lazy val在特质?我们如何定义 lazy val在特质?

最佳答案

在一个特质上懒惰是没有意义的。 lazy表示仅在调用时计算值。

当你想访问something的值时不是MyTrait.something这将被调用,但是您的类中扩展了该特性的属性。在你的情况下SomeThing.something .

您可以保留 lazy在你的扩展类中。

trait 只定义了需要覆盖的必要变量-函数

关于scala - 为什么 Scala 不允许在 trait 中定义惰性 val?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56461978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com