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
解决了这个问题