评论者:jafingerhut
可以在命名一个函数的 Var 上为原始值设置类型提示,或者像这样为任何你想要的值设置类型提示
(def {:tag 'long} foo 17)
(defn {:tag 'double} bar [x y]
(* 2.0 x y))
我认为必须使用 {:tag 'long} 而不是 ^long 是奇怪的,因为使用 ^long 最终会得到一个无用的类型提示,这是函数 clojure.core/long 的值。
然而,Clojure 编译器将使用上述示例中所示的原生类型提示以避免在合适的 Java 互操作调用中进行反射,因此将其更改为错误似乎是不希望的事情。