Một tính năng tiện dụng của Scala là lazy val
, trong đó việc đánh giá a val
bị trì hoãn cho đến khi cần thiết (ở lần truy cập đầu tiên).
Tất nhiên, lazy val
phải có một số chi phí chung - ở đâu đó Scala phải theo dõi xem giá trị đã được đánh giá chưa và đánh giá phải được đồng bộ hóa, bởi vì nhiều luồng có thể cố gắng truy cập giá trị lần đầu tiên cùng một lúc.
Chính xác thì chi phí của một lazy val
- có một cờ boolean ẩn liên quan đến một lazy val
để theo dõi nếu nó đã được đánh giá hay không, chính xác những gì được đồng bộ hóa và có thêm chi phí?
Ngoài ra, giả sử tôi làm điều này:
class Something {
lazy val (x, y) = { ... }
}
Đây có giống như có hai lazy val
s riêng biệt x
và y
tôi chỉ nhận được chi phí một lần cho cặp này (x, y)
?
bitmap$0
trường này không ổn định trong triển khai hiện tại (2.8).