chức năng bản đồ không thực sự chạy hàm được ánh xạ trên mỗi bộ ghi của bộ sưu tập. thay vào đó nó trả về một ô 'lười biếng'. Điều này trông giống như danh sách liên kết đơn lẻ cổ điển của bạn với một khác biệt rất quan trọng, dữ liệu trong mỗi ô được tính tại thời điểm nó được đọc không phải là thời gian được xác định (kết quả này được lưu trữ để đọc sau này). Vì vậy, để có chức năng thực sự chạy, bạn phải đọc kết quả của việc chạy hàm. Bởi vì trong trường hợp này bạn không chăm sóc về kết quả của hàm duy nhất mà nó chạy clojure cung cấp một chức năng bao bọc lớn được gọi là
(dorun .... insert your map here ....)
rằng sẽ tạo ra bản đồ, đọc kết quả và kịp thời ném chúng ra với ra lãng phí bộ nhớ lưu trữ chúng cho sau này.
Nếu bạn định vị một hàm có kết quả bạn muốn giữ thì hãy sử dụng liều lượng thay vào đó.
Nguồn
2009-07-23 18:20:10
Cảm ơn câu trả lời chi tiết. Tất cả các danh sách trừu tượng đều lười biếng? Làm thế nào để tôi biết cái nào là cái nào và cái nào không? – unj2
tôi tin rằng tất cả chúng đều ngoại trừ ngược lại, mặc dù vectơ có chức năng (rsec [1 2 3]) tạo ra giây bắt đầu ở cuối thường giải quyết vấn đề đó. –