【发布时间】:2009-10-21 06:25:51
【问题描述】:
我正在研究 Stuart Halloway 的“Programmming Clojure”中的 Clojure 示例,但在使用绑定时遇到了问题:
(def foo 10)
; => '#user/foo
foo
; => 10
(binding [foo 42] foo)
; => 10
(binding [user/foo 42] foo)
; => 10
(binding [user/foo 42] (var-get #'user/foo))
; => 10
为什么不给我 42?
【问题讨论】:
-
第二行好像有两个字符互换了。
-
您使用的是什么 IDE/环境?什么版本的 Clojure?你的代码对我来说很好,来自 git 的最新 Clojure,从命令行运行。
-
Clojure-1.1.0-alpha-SNAPSHOT on Snow Leopard...我刚刚在我的 Windows PC 上尝试了 1.0.0 并且运行良好,所以它一定是那个版本的错误。有趣的是,这本书的作者建议您使用 Clojure 的捆绑版本,因为他在上面测试了他的所有示例......然后它不适用于该示例。
-
在 Linux/1.1.0-alpha 上的行为相同,也许你应该在 groups.google.com/group/clojure 上询问这个问题