我看了一下参考资料:http ://clojure.org/vars#Vars%20and%20the%20Global%20Environment,http : //clojuredocs.org/clojure_core/clojure.core/binding
以及clojure 和 ^:dynamic和Clojure 动态绑定
我仍然不明白为什么需要,binding
因为我编写的每个程序都没有它们,我可以找到以传统方式编写示例的方法——我觉得这更容易理解。有没有利用这个的项目/编程范例的例子?
例如......在动物说话的例子中,你可以得到类似的效果:
(def dog {:name "Dog" :sound "Woof"})
(def cat {:name "Cat" :sound "Meow"})
(defn speak [animal]
(str (:name animal) " says " (:sound animal))
(println (speak dog))
(println (speak cat))
没有宏,没有动态绑定......仍然很干净。