欢迎!有关如何使用本网站的一些更多信息,请参阅关于页面。
如果在repl中仅输入"@1",在旧版本中将会得到Long无法转换为IDeref的错误。在1.5版本中,错误信息是它无法转换为java.util.concurrent.Future。这是因为它假定所有非IDeref的对象都是Future。deref方法应生成一个自定义错误,指出您传入的类型既不是IDeref也不是Future。
评论者:gfredericks
附上一个补丁,实现了旧行为(无法转换为IDeref),这在考虑对j.u.c.Future的支持似乎是边缘情况(因为clojure的未来本身就是IDeref)的情况下,在我看来已经足够好了。
我做得最奇怪的事情是使用clojure.core/cast无条件抛出ClassCastException。如果这很奇怪,我会改变方法。