【问题标题】:Is ^:dynamic an atomic keyword, or a combination?^:dynamic 是原子关键字还是组合?
【发布时间】:2015-03-11 08:58:39
【问题描述】:

^:dynamic 的功能很明确(例如,参见clojure and ^:dynamic)。我的问题:^:dynamic 是原子的,即不可分割的关键字吗?如果不是,以下任何一项是否也有效?运算符/装饰 ^: 向表达式添加了什么?

(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 是一个不可分割的关键字,为什么要附加所有有趣的标点符号?

【问题讨论】:

  • 在 Clojure 中 atomic 从不指数据的可分性,它指的是更新的粒度。
  • 我愿意接受其他建议,@noisesmith。

标签: clojure


【解决方案1】:

此声明

(def ^:dynamic x 5)

等价于

(def ^{:dynamic true} x 5)

一般^ 后跟关键字或映射是metadata 阅读器宏。如果后跟关键字,它将在对象的元数据映射中将该关键字设置为 true。

总结一下:^:dynamic 不是“不可分割”的关键字;它是一个元数据阅读器宏,后跟一个普通关键字(在本例中为:dynamic)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多