两人似乎在Clojure中做同样的事情。哪种语法是规范的?
(defn a ^int [] 4)
(defn b ^{:tag int} [] 4)
我希望它是a
,因为它更短。
答案 0 :(得分:8)
当我需要包含除标签之外的元数据时,我只使用b
。例如,在实现瞬态集合时,我需要
(deftype Whatever [^{:tag ITransientVector
:unsynchronized-mutable true} foo])
请注意,编写
是完全可以接受的(deftype Whatever [^:unsynchronized-mutable ^ITransientVector foo])
但我个人更喜欢显式地图。
答案 1 :(得分:5)
它的'a'是规范的。它是迄今为止我在Clojure代码和Clojure网站上的文档中看到的唯一一个。有关类型提示的详细信息,请参阅 here 。
希望这有帮助。