在函数定义中:
(defn ^boolean =
;;other arities omitted...
([x y]
(if (nil? x)
(nil? y)
(or (identical? x y)
^boolean (-equiv x y))))
函数定义中的^boolean
部分是什么意思?它是仅扩展元数据并表示返回类型,还是具有更深层含义?换句话说,它是否比简单地使代码更自我描述更能增加价值?
答案 0 :(得分:2)
这是一种类型提示。见
https://www.safaribooksonline.com/library/view/clojure-programming/9781449310387/ch09s05.html
http://clojure-doc.org/articles/language/functions.html
或你最喜欢的书。请注意:编译器不强制实际类型与类型提示匹配!没有类型提示的示例:
(defn go []
"banana" )
(println (go))
;=> banana
(defn ^long go []
"banana" )
(println (go))
;=> Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number,