【问题标题】:Why does (name <keyword>) return nil?为什么 (name <keyword>) 返回 nil?
【发布时间】:2014-11-17 10:31:33
【问题描述】:

我在这方面摸不着头脑。我有这个打嗝sn-p:

[:div.tab-pane {:id (name (:name t))} ...]

't' 是一条记录,除其他字段外,:name 设置为关键字。此特定记录的 :name 映射到 :testgroup

如果我这样运行:

[:div.tab-pane {:id (:name t)} ...]

生成的 html 并不奇怪:&lt;div id=":testgroup" class="tab-pane" .../&gt;

但是当我调用(name (:name t)) 运行它时,我得到:&lt;div class="tab-pane" .../&gt;

这与打嗝无关,在我对该函数的测试中,我在原始 [:div ...] 向量的 {:id } 映射中得到一个 nil 值,但为什么呢?

【问题讨论】:

    标签: clojure namespaces keyword


    【解决方案1】:

    愚蠢的错误。万一其他人碰到它:

    我在上面省略的是该函数是在该特定记录上扩展的协议的一部分。这意味着协议方法中的符号name 被记录的name 字段所遮蔽。调用clojure.core/name 而不是name 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2014-11-11
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 2011-06-26
      相关资源
      最近更新 更多