_评论由: 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交互调用中使用反射,因此将它们作为错误似乎是不希望的。