Scala的一个便捷功能是lazy val,其中a的求值val被延迟到必要时(首次访问时)。
当然,lazy val必须有一些开销-Scala必须跟踪某个值是否已经被评估以及评估是否必须同步,因为多个线程可能会尝试同时首次访问该值。
-的确切成本是多少lazy val-是否存在与boolean关联的隐藏布尔标志lazy val以跟踪是否已被评估,确切地同步了什么,还有更多成本吗?
另外,假设我这样做:
class Something {
lazy val (x, y) = { ... }
}
这与拥有两个单独的lazy vals 是相同的x,y或者对于该对我仅获得一次开销(x, y)吗?
慕哥9229398
沧海一幻觉