Une fonctionnalité pratique de Scala est lazy valque l'évaluation d'un valest retardée jusqu'à ce qu'elle soit nécessaire (au premier accès).
Bien sûr, cela lazy valdoit avoir une surcharge - quelque part, Scala doit savoir si la valeur a déjà été évaluée et l'évaluation doit être synchronisée, car plusieurs threads peuvent essayer d'accéder à la valeur pour la première fois en même temps.
Quel est exactement le coût d'un lazy val- y a-t-il un indicateur booléen caché associé à a lazy valpour suivre s'il a été évalué ou non, qu'est-ce qui est exactement synchronisé et y a-t-il d'autres coûts?
De plus, supposons que je fasse ceci:
class Something {
lazy val (x, y) = { ... }
}
Est-ce la même chose que d'avoir deux lazy vals séparés xet you est-ce que je reçois la surcharge une seule fois, pour la paire (x, y)?
bitmap$0champ est volatile dans l'implémentation actuelle (2.8).