【发布时间】:2015-11-03 13:23:57
【问题描述】:
据我了解,在动态 var 上设置新绑定会影响在该绑定中调用的所有函数,以及从这些函数调用的所有函数。
为什么在下面的第一个示例中绑定似乎丢失了?
(def ^:dynamic *out-dir* "/home/user")
(binding [*out-dir* "/home/dave"] (map #(str *out-dir* %) [1 2 3]))
; gives: ("/home/user1" "/home/user2" "/home/user3")
; expected: ("/home/dave1" "/home/dave2" "/home/dave3")
(binding [*out-dir* "/home/dave"] (conj (map #(str *out-dir* %) [1 2 3]) *out-dir*))
; gives: ("/home/dave" "/home/dave1" "/home/dave2" "/home/dave3")
【问题讨论】:
标签: clojure