Scala không cho phép tạo ra các vars laze, chỉ vals lười biếng. Nó có ý nghĩa.làm cho một var lười biếng trong scala
Nhưng tôi đã gặp phải trường hợp sử dụng, nơi tôi muốn có khả năng tương tự. Tôi cần một người giữ biến lười biếng. Nó có thể được gán một giá trị cần được tính toán bằng thuật toán tốn thời gian. Nhưng sau này nó có thể được gán lại cho một giá trị khác và tôi không muốn gọi tính toán giá trị đầu tiên chút nào.
Ví dụ giả sử có một số nét diệu var
lazy var value : Int = _
val calc1 :() => Int = ... // some calculation
val calc2 :() => Int = ... // other calculation
value = calc1
value = calc2
val result : Int = value + 1
Đoạn mã này chỉ nên gọi calc2(), không calc1
Tôi có một ý tưởng làm thế nào tôi có thể viết chứa này với các chuyển đổi ngầm và và lớp container đặc biệt. Tôi curios nếu có bất kỳ tính năng scala nhúng mà không yêu cầu tôi viết mã không cần thiết
+1 cho tùy chọn thứ hai – paradigmatic
Đây không phải là một giải pháp đúng vì nó không nắm bắt được "bộ nhớ đệm" bản chất của một lười biếng. I E. mỗi khi bạn đánh giá lv.value, hàm sẽ được thực hiện lại (trong ví dụ này nó sẽ in lại và lặp lại). –