Scala的一个方便的特性是lazy val
,在这个特性中,val
的求值会延迟到需要时(第一次访问时)。
当然,lazy val
必须有一些开销--在某个地方,Scala必须跟踪这个值是否已经被求值,并且求值必须是同步的,因为多个线程可能会同时尝试第一次访问这个值。
lazy val
的成本到底是多少-是否有一个隐藏的布尔标志与lazy val
相关联,用于跟踪它是否已被评估,同步的确切内容是什么,还有其他成本吗?
另外,假设我这样做:
class Something {
lazy val (x, y) = { ... }
}
这是否与拥有两个独立的lazy val
的x
和y
相同,或者对于(x, y)
对,我是否只获得一次开销?
https://stackoverflow.com/questions/3041253
复制相似问题