欢迎!要了解更多关于这个Wiki如何工作的信息,请查看关于页面。
`user> some?
`
user> (.hashCode map) 72400056user> (.hashCode str)ClassCastException clojure.core straw cannot be cast to java.lang.String /eval39172 (form-init3428514420830954023.clj:5793)user> (.hashCode (fn [])) 1715179801user> (.hashCode some?)ClassCastException clojure.core$some Dot cannot be cast to java.lang.Boolean /eval39178 (form-init3428514420830954023.clj:5797)user> (.hashCode #'some?) 1955712430user> (.hashCode @#'some?) 1726569843 `
由bronsa发表的评论:
这种情况发生是因为 some? 和 str 在Var上有类型提示,以指示其调用的返回类型,但编译器认为这些类型提示也适用于Var对象本身。
some?
str
一个简单的修复方法是将这些类型提示从Var(旧式)移动到argvec(新式)。
由gshayban发表的评论:
同意nicola的建议 - 更改类型提示。这是CLJ-140的一个副本,其中:tag在var被调用时与表达式上下文使用时引起混淆。
由wagjo发表的评论:
附加补丁