^:dynamic 是原子关键字还是组合?
Is ^:dynamic an atomic keyword, or a combination?
^:dynamic
的功能很明确(例如,参见clojure and ^:dynamic)。我的问题: ^:dynamic
是原子的,即不可分割的关键字吗?如果不是,以下任何一项是否也有效? operators/decorations ^
和 :
添加到表达式中的是什么?
(def ^:dynamic y 5) -- Valid (known).
(def dynamic y 5) -- but the rest of these? ...
(def ^dynamic y 5)
(def :dynamic y 5)
(def ^: y 5)
或者,也许没有明确的答案:如果 ^:dynamic
是一个不可分割的关键字,为什么要在上面附加所有有趣的标点符号?
这个声明
(def ^:dynamic x 5)
相当于
(def ^{:dynamic true} x 5)
一般来说^
后面跟一个关键字或者map就是一个metadatareader宏。如果后面跟一个关键字,它会在对象的元数据映射中将该关键字设置为 true。
总而言之:^:dynamic
不是 "indivisible" 关键字;它是一个元数据 reader 宏,后跟一个普通关键字(在本例中为 :dynamic
)。
^:dynamic
的功能很明确(例如,参见clojure and ^:dynamic)。我的问题: ^:dynamic
是原子的,即不可分割的关键字吗?如果不是,以下任何一项是否也有效? operators/decorations ^
和 :
添加到表达式中的是什么?
(def ^:dynamic y 5) -- Valid (known).
(def dynamic y 5) -- but the rest of these? ...
(def ^dynamic y 5)
(def :dynamic y 5)
(def ^: y 5)
或者,也许没有明确的答案:如果 ^:dynamic
是一个不可分割的关键字,为什么要在上面附加所有有趣的标点符号?
这个声明
(def ^:dynamic x 5)
相当于
(def ^{:dynamic true} x 5)
一般来说^
后面跟一个关键字或者map就是一个metadatareader宏。如果后面跟一个关键字,它会在对象的元数据映射中将该关键字设置为 true。
总而言之:^:dynamic
不是 "indivisible" 关键字;它是一个元数据 reader 宏,后跟一个普通关键字(在本例中为 :dynamic
)。