Одна зручна особливість Scala полягає в тому lazy val
, коли оцінка val
затримки затримується до необхідності (при першому доступі).
Звичайно, lazy val
обов'язково мають бути деякі накладні витрати - десь Scala повинен відслідковувати, чи значення вже було оцінено, і оцінку потрібно синхронізувати, тому що кілька потоків можуть намагатися отримати доступ до цього значення одночасно.
Яка саме вартість lazy val
- чи є прихований булевий прапор, пов’язаний з a lazy val
для відстеження, якщо він був оцінений чи ні, що саме синхронізовано і чи є ще витрати?
Крім того, припустимо, що я роблю це:
class Something {
lazy val (x, y) = { ... }
}
Це те ж саме, що мати два окремих lazy val
s x
і y
чи я отримую накладні витрати лише один раз для пари (x, y)
?
bitmap$0
поле є непостійним у поточній реалізації (2.8).