对于Vars,静态和动态是什么意思?

时间:2017-04-02 07:28:50

标签: clojure

来自https://clojure.org/reference/vars

的变量的clojure文档
  

默认情况下,Vars是静态的,但Vars可以标记为动态

静态和动态是什么意思?

我能够多次重新定义var,即使它没有明确标记为动态。

1 个答案:

答案 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