我在 Twitter 的 Effective Scala 页面上阅读了关于Lazyness [原文如此] 的部分,其中包括这个建议(重点是我的):
为此目的使用惰性字段[按需计算和缓存值],但在语义需要惰性时避免使用惰性。在这些情况下,最好是明确的,因为它使成本模型明确,并且可以更精确地控制副作用。
我不明白他们为什么要提出这个要求。为什么在语义需要惰性的情况下避免使用关键字会更好lazy
(这意味着它对于程序的正确性是必要的,而不仅仅是将其用作优化)。我看不出编写自己的惰性初始化代码如何比使用语言内置的关键字更清楚地表明需要惰性这一事实!lazy
我知道使字段线程安全涉及一些额外的开销lazy
,但我不认为这就是他们在这里得到的......
关于使用我完全错过的这个指南是否有一些隐藏的优点lazy
,还是我最好忽略这个建议?