欢迎!请访问关于页面查看更多关于此功能的信息。
('+ 1 2) ;; 返回2,因为这被视为(get 1 '+ 2)
虽然这对于了解这次查找行为来说是“一致的”,但对Clojure新手来说可能很困惑,这似乎是一种无用的行为。
建议:修改Keyword.invoke()和Symbol.invoke(),以将第一个Object参数限制为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)
其他一切工作正常