欢迎!请参阅关于页面了解更多有关如何使用本网站的信息。
这应该会因为使用完全限定名称作为参数而报错
(defmacro lookup (link: ))`(reify clojure.lang.ILookup
(valAt (link: _ key))))
取而代之,它只是简单地忽略方法体中的该参数,而使用 clojure.core/key。
评论者:导入器
richhickey 说:我不确定 bugs 是否正如你说的那样,或者解决方法是否如你所建议的那样。真正的问题是当键被限定时的解析。另一种可能性是在那里忽略限定符。
从http://www.assembla.com/spaces/clojure/tickets/348 转换而来附件0001-为348-reify-shouldn-t-accept-qualified-.patch 添加测试 - https://www.assembla.com/spaces/clojure/documents/d2xUJIxTyr36fseJe5cbLA/download/d2xUJIxTyr36fseJe5cbLA
technomancy 说:在[文件:d2xUJIxTyr36fseJe5cbLA)]:一个测试来暴露不希望的行为
技术巫术说:很有趣。所以在这这里不适宜要求使用自动gensym?为什么reify方法和代理方法的规则不同?
(defmacro lookup (link: ))`(proxy (link: clojure.lang.ILookup) (link: ) (valAt (link: key) key))) (lookup)
(defmacro lookup (link: ))`(proxy (link: clojure.lang.ILookup) (link: )
(valAt (link: key) key)))
(lookup)
不能使用限定名称作为参数:clojure.core/key(link: 抛出类 java.lang.Exception)