Tôi có một chút tính toán có phần đắt tiền (bắt đầu một cơ sở dữ liệu), và tôi chỉ muốn tạo cơ sở dữ liệu nếu tôi thực sự sẽ sử dụng nó. Tôi đang tìm một biến tham chiếu (hoặc chỉ là một biến đơn giản, nếu có thể) sẽ chỉ đánh giá giá trị của nó trong trường hợp nó được sử dụng (hoặc không tham chiếu). Một cái gì đó khái niệm như sau.Các biến lười biếng có tồn tại trong Clojure không?
(def v (lazy-var (fn [] (do (println "REALLY EXPENSIVE FUNCTION") true))))
và trong tương lai, khi tôi hoặc là chỉ cần sử dụng var v, hoặc gọi @v, Sau đó tôi nhận được nó để in ra "CHỨC NĂNG thực sự tốn kém", và từ bản v có giá trị true. Điều quan trọng ở đây là fn không được đánh giá cho đến khi biến được (de) tham chiếu. Khi cần thiết, hàm được đánh giá một lần và chỉ một lần để tính giá trị của biến. Điều này có thể xảy ra trong clojure không?
geez, tại sao tôi không nghĩ đến từ đó khi cố gắng tìm kiếm điều này? –