【发布时间】:2012-02-28 01:44:14
【问题描述】:
我试图了解 ^:const 在 clojure 中的作用。这就是开发文档所说的。 http://dev.clojure.org/display/doc/1.3
(定义常量 {:pi 3.14 :e 2.71})
(def ^:const pi (:pi 常数)) (def ^:const e (:e 常量))
在映射中查找 :e 和 :pi 的开销发生在编译时,因为 (:pi 常量) 和 (:e 常量) 在它们的父 def 形式被求值时被求值。
这令人困惑,因为元数据是针对绑定到符号 pi 的 var 和绑定到符号 e 的 var,但下面的句子说它有助于加快地图查找,而不是 var 查找。
有人可以解释^:const 在做什么以及使用它的理由吗?这与使用巨大的 let 块或使用像 (pi) 和 (e) 这样的宏相比如何?
【问题讨论】: