欢迎!请查看关于页面获取更多关于如何使用的相关信息。
('+ 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)
除此之外其他一切正常