欢迎!请查看关于页面以了解更多关于这个平台的信息。
`user> some?
`
user> (.hashCode map) 72400056user> (.hashCode str)ClassCastException clojure.core$str 不能被转换为 java.lang.String /eval39172 (form-init3428514420830954023.clj:5793)user> (.hashCode (fn [])) 1715179801user> (.hashCode some?)ClassCastException clojure.core$someQMARK 不能被转换为 java.lang.Boolean /eval39178 (form-init3428514420830954023.clj:5797)user> (.hashCode #'some?) 1955712430user> (.hashCode @#'some?) 1726569843 `
评论由:bronsa 提出
这是因为 some? 和 str 上有类型提示,用于表示其调用的类型,但编译器认为这些类型提示同样适用于 Var 对象本身。
some?
str
一个简单的解决方法是,将这些类型提示从 Var(旧式)移动到 argvec(新式)。
评论由:gshayban 提出
同意 nicola 的建议 - 改变类型提示。这与 CLJ-140 是重复的,其中 :tag 在 var 被调用与在表达式上下文中使用时引起混淆。
评论由:wagjo 提出
附上补丁