Salah satu fitur praktis dari Scala adalah lazy val
, di mana evaluasi a val
ditunda sampai diperlukan (pada akses pertama).
Tentu saja, lazy val
harus memiliki beberapa overhead - di suatu tempat Scala harus melacak apakah nilai telah dievaluasi dan evaluasi harus disinkronkan, karena beberapa utas mungkin mencoba mengakses nilai untuk pertama kalinya pada waktu yang sama.
Apa sebenarnya biaya a lazy val
- apakah ada bendera boolean tersembunyi yang terkait dengan lazy val
untuk melacak apakah telah dievaluasi atau tidak, apa sebenarnya yang disinkronkan dan apakah ada biaya lagi?
Selain itu, misalkan saya melakukan ini:
class Something {
lazy val (x, y) = { ... }
}
Apakah ini sama dengan memiliki dua lazy val
s terpisah x
dan y
atau apakah saya mendapatkan overhead hanya sekali, untuk pasangan (x, y)
?
bitmap$0
bidang ini tidak stabil dalam implementasi saat ini (2.8).