【发布时间】:2016-07-31 21:28:22
【问题描述】:
我知道在 Clojure 中,命名空间将符号映射到 Var。所以我们可以像这样将符号x 映射到一个Var(这里是默认命名空间):
user=> (def x 5)
#'user/x
user=> #'x
#'user/x
user=> (type #'x)
clojure.lang.Var
user=> x
5
如果我随后这样说
user=> (def x 3)
#'user/x
我是否将符号 x 重新绑定到一个全新的 Var,或者我是否更新了上面创建的同一个 Var 中的值?我怎么知道?
我认为是后者,因为我读过“只有 Java 字段、Vars、Refs 和 Agents 在 Clojure 中是可变的”这句话。在Clojure Reference page on Vars 中,但我不确定这是否可以作为证明。
【问题讨论】:
-
你的预感似乎在这个问题中得到了证实:stackoverflow.com/questions/16447621/…
-
很好的发现......不过,我希望有类似 Python 或 Ruby 的东西
id。
标签: clojure