【发布时间】:2011-10-07 08:00:39
【问题描述】:
什么是正确的序列类型?我有这个代码:
(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])
但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2)。
【问题讨论】:
标签: clojure static-typing typechecking
什么是正确的序列类型?我有这个代码:
(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])
但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2)。
【问题讨论】:
标签: clojure static-typing typechecking
我的理解是 Clojure 的 Type Hints 只是出于性能原因,通过回避反射改进方法查找;这是它们的唯一目的,而不是在动态语言中强制执行静态类型。
请参阅this answer to a similar question。
编辑:
有人谈论能够enforce primitive return types in some cases in Clojure 1.3,但这显然是不断变化的,仍然不适用于序列类型。
【讨论】: