Trong câu trả lời được chấp nhận cho một câu hỏi khác, Setting Clojure "constants" at runtime chức năng clojure constantly
được sử dụng.Khi nào sử dụng `liên tục` trong clojure, các đối số của nó được đánh giá như thế nào và khi nào?
Định nghĩa của constantly
trông giống như vậy:
(defn constantly
"Returns a function that takes any number of arguments and returns x."
{:added "1.0"}
[x] (fn [& args] x))
Chuỗi doc nói những gì nó làm nhưng không phải lý do tại sao người ta sẽ sử dụng nó.
Trong câu trả lời được đưa ra trong câu hỏi trước liên tục được sử dụng như sau:
(declare version)
(defn -main
[& args]
(alter-var-root #'version (constantly (-> ...)))
(do-stuff))
Vì vậy, các chức năng được trả về bởi liên tục được đánh giá trực tiếp cho kết quả của nó. Tôi bối rối như thế nào điều này là hữu ích. Tôi có lẽ không hiểu làm thế nào x
sẽ được đánh giá có và không được bao bọc trong 'liên tục'.
Khi nào tôi nên sử dụng constantly
và tại sao cần thiết?