使用^或:tag meta键入提示返回值?

时间:2011-06-26 15:37:05

标签: clojure type-hinting

两人似乎在Clojure中做同样的事情。哪种语法是规范的?

(defn a ^int [] 4)

(defn b ^{:tag int} [] 4)

我希望它是a,因为它更短。

2 个答案:

答案 0 :(得分:8)

当我需要包含除标签之外的元数据时,我只使用b。例如,在实现瞬态集合时,我需要

(deftype Whatever [^{:tag ITransientVector
                     :unsynchronized-mutable true} foo])

请注意,编写

是完全可以接受的
(deftype Whatever [^:unsynchronized-mutable ^ITransientVector foo])

但我个人更喜欢显式地图。

答案 1 :(得分:5)

它的'a'是规范的。它是迄今为止我在Clojure代码和Clojure网站上的文档中看到的唯一一个。有关类型提示的详细信息,请参阅 here

希望这有帮助。