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

时间:2014-11-17 10:31:33

标签: clojure namespaces keyword

我在这上面搔了一会儿。我有这个打嗝片段:

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

&#39;吨&#39;是一个记录,其中包括:name设置为关键字的字段。此特定记录具有:名称映射到:testgroup

如果我这样运行:

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

生成的html并不奇怪:<div id=":testgroup" class="tab-pane" .../>

但是,当我在调用(name (:name t))时,我得到:<div class="tab-pane" .../>

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

1 个答案:

答案 0 :(得分:2)

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

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