Clojure 为什么(name<;keyword>;)返回nil?

Clojure 为什么(name<;keyword>;)返回nil?,clojure,namespaces,keyword,Clojure,Namespaces,Keyword,这件事让我挠头有一阵子了。我有一个小插曲: [:div.tab-pane {:id (name (:name t))} ...] “t”是一个记录,其中,:name设置为关键字。此特定记录的:name映射到:testgroup 如果我这样运行它: [:div.tab-pane {:id (:name t)} ...] 生成的html并不奇怪: 但是当我调用(name(:name t))运行它时,我得到: 这与hiccup无关,在我对这个函数的测试中,我在原始[:div…]向量的{:id}映射

这件事让我挠头有一阵子了。我有一个小插曲:

[:div.tab-pane {:id (name (:name t))} ...]
“t”是一个记录,其中,
:name
设置为关键字。此特定记录的:name映射到
:testgroup

如果我这样运行它:

[:div.tab-pane {:id (:name t)} ...]
生成的html并不奇怪:

但是当我调用
(name(:name t))
运行它时,我得到:


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

愚蠢的错误。如果其他人遇到它:

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