Tôi có một mã như thế này. Tôi có thể chạy điều này trong repl nhưng không thể từ dòng lệnh. Tôi đoán tôi đã có một vấn đề đánh giá lười biếng.Vấn đề đánh giá lười biếng
; items.clj
(def items (ref []))
(defn init-items []
(map
#(dosync
(alter items conj %))
["foo" "bar" "baz" ]))
(init-items)
(println (first @items))
$ java -jar clojure.jar items.clj
$ nil
trọng.
tôi làm việc. Cảm ơn rất nhiều. – Osman
Thực tế 'dorun' phù hợp hơn với trường hợp này (' doall' giữ trên đầu của seq nó kết thúc tốt đẹp và trả về nó, trong khi 'dorun' loại bỏ nó từng bước và cuối cùng trả về' nil' - vì vậy nó phù hợp hơn với mã hiệu ứng phụ). –
@Michal: Tất nhiên, bạn hoàn toàn chính xác. Tôi đã mặc một chút với Clojure nhưng chưa bao giờ đạt được trình độ cao, và bây giờ, thật đáng buồn, thậm chí nó bắt đầu rỉ sét. Cảm ơn vì sự đúng đắn của bạn! –