Una característica útil de Scala es lazy val
, donde la evaluación de un val
se retrasa hasta que sea necesario (en el primer acceso).
Por supuesto, un lazy val
debe tener algunos gastos generales: en algún lugar, Scala debe realizar un seguimiento de si el valor ya se ha evaluado y si la evaluación debe estar sincronizada, ya que varios subprocesos pueden intentar acceder al valor por primera vez al mismo tiempo.
¿Cuál es exactamente el costo de un lazy val
? ¿Hay un indicador booleano oculto asociado con un lazy val
seguimiento si se ha evaluado o no, qué se sincroniza exactamente y hay más costos?
Además, supongamos que hago esto:
class Something {
lazy val (x, y) = { ... }
}
Es esto lo mismo que tener dos separadas lazy val
s x
y y
o qué tengo la cabeza una sola vez, para el par (x, y)
?
bitmap$0
campo es volátil en la implementación actual (2.8).