Um recurso útil do Scala é lazy val
que a avaliação de a val
é adiada até que seja necessária (no primeiro acesso).
Obviamente, é lazy val
necessário ter alguma sobrecarga - em algum lugar o Scala deve acompanhar se o valor já foi avaliado e a avaliação deve ser sincronizada, porque vários encadeamentos podem tentar acessar o valor pela primeira vez ao mesmo tempo.
Qual é exatamente o custo de um lazy val
- existe um sinalizador booleano oculto associado a um lazy val
para acompanhar se foi avaliado ou não, o que exatamente está sincronizado e há mais custos?
Além disso, suponha que eu faça isso:
class Something {
lazy val (x, y) = { ... }
}
É o mesmo que ter dois lazy val
s separados x
e y
ou recebo a sobrecarga apenas uma vez para o par (x, y)
?
bitmap$0
campo é volátil na implementação atual (2.8).