来自https://clojure.org/reference/vars
的变量的clojure文档默认情况下,Vars是静态的,但Vars可以标记为动态
静态和动态是什么意思?
我能够多次重新定义var,即使它没有明确标记为动态。
答案 0 :(得分:0)
Vars需要明确标记为^:dynamic
,以便它们可以动态重新绑定:
=> (def ^:dynamic x 1)
=> (def ^:dynamic y 1)
=> (+ x y)
=> 2
;;在binding
范围内,x
= 2和y
= 3
=> (binding [x 2 y 3]
(+ x y))
=> 5