欢迎!请参阅 关于 页面,了解有关如何工作的更多信息。
如果您在repl中只输入"@1",在早期版本中,您会收到Long无法转换为IDeref的错误。在1.5中,错误信息表示它无法转换为java.util.concurrent.Future。这是因为它假定任何不是IDeref的东西自动就是Future。deref方法应生成一个自定义错误,指出您传入的类型既不是IDeref也不是Future。
评论由:gfredericks做出
附上了一个实现旧行为的补丁(不能转换为IDeref),在我看来,考虑到对j.u.c.Future的支持似乎相当边缘(因为Clojure的futures本身也是IDeref),这已经足够好。
我做得最奇怪的事情是使用clojure.core/cast无条件抛出ClassCastException。如果这看起来很奇怪,我会做些不同的事情。