欢迎!请参阅关于页面以获取更多有关如何使用此信息的信息。
('+ 1 2) ;; 返回2,因为它被处理为(get 1 '+ 2)
虽然这“一致”一旦你知道查找行为,但对于Clojure新手来说很令人困惑,这似乎是一种不必要的行为。
提议:修改Keyword.invoke()和Symbol.invoke()以将第一个Object参数限制为instanceof ILookup、Map或IPersistentSet(或null),以便“未找到”行为不会产生不直观的行为。
这应与CLJ-1107保持一致。
评论者:zjhmale
修复此问题的补丁
目前
user=> ('+ 1 2)IllegalArgumentException 类 java.lang.Long 无法查找:clojure.lang.Symbol.throwNotLookupable (Symbol.java:127)user=> (:+ 1 2)IllegalArgumentException 类 java.lang.Long 无法查找:clojure.lang.Keyword.throwNotLookupable (Keyword.java:103)
其余一切正常工作