2024 年 Clojure 调查! 分享您的想法。

欢迎!请参阅 关于 页面,了解这个如何工作的更多信息。

0
Clojure

这应该会抱怨使用完全限定的名称作为参数

(defmacro lookup (link: )
`(reify clojure.lang.ILookup

      (valAt (link: _ key))))

取而代之,它简单地忽略了方法体内的该参数,并选择 clojure.core/key。

5 个答案

0

评论由:importer 提供

richhickey 表示:我不确定这个错误是你说的,或者解决方案应该像你建议的。真正的问题在于解决限定情况下的 key。另一种可能性是忽略那里的限定符。

0

评论由:importer 提供

http://www.assembla.com/spaces/clojure/tickets/348 转换
附件
0001-Add-a-test-for-348-reify-shouldn-t-accept-qualified-.patch - https://www.assembla.com/spaces/clojure/documents/d2xUJIxTyr36fseJe5cbLA/download/d2xUJIxTyr36fseJe5cbLA

0

评论由:importer 提供

technomancy said: (link: [file:d2xUJIxTyr36fseJe5cbLA)]: 一个测试来暴露不希望的行为

0

评论由:importer 提供

technomancy说:很有趣。所以在这种情况下不需要要求auto-gensym?为什么reify方法和proxy方法的规则不同?

(defmacro lookup (link: )
`(proxy (link: clojure.lang.ILookup) (link: )

      (valAt (link: key) key)))

(lookup)

不能使用限定名作为参数:clojure.core/key
(link: 抛出类 java.lang.Exception)

0
参考:https://clojure.atlassian.net/browse/CLJ-348(由 alex+import 报告)
...