我试图动态投射列表的值 - 我不需要,但我很好奇这里的问题是什么:
A
我猜它与(double 0) ; => 0.0
(class 0.0) ; => java.lang.Double
(cast (class 0.0) 0) ; => ClassCastException Cannot cast java.lang.Long to
; java.lang.Double java.lang.Class.cast
中的资本D有关。为什么我不能Double
我在上面的代码中尝试过的方式?
答案 0 :(得分:5)
这不是cast
在Clojure中的作用 - 它不是Java演员,因为这种演员在具有动态而非静态类型的语言中毫无意义。事实上,几乎从来没有理由打电话给cast
;在Clojure编程的五年中,我当然没有。请参阅documentation for cast:它始终返回其输入,绝不返回任何其他内容。它的唯一作用是如果输入与你想要转换的类不匹配则抛出异常。
答案 1 :(得分:3)