【问题标题】:clojure sequence typeclojure 序列类型
【发布时间】:2011-10-07 08:00:39
【问题描述】:

什么是正确的序列类型?我有这个代码:

(defrecord MethodInfo [^clojure.lang.ISeq preconds ^clojure.lang.ISeq postconds])

但它似乎没有正确执行类型要求,因为我可以写(new MethodInfo 1 2)

【问题讨论】:

    标签: clojure static-typing typechecking


    【解决方案1】:

    我的理解是 Clojure 的 Type Hints 只是出于性能原因,通过回避反射改进方法查找;这是它们的唯一目的,而不是在动态语言中强制执行静态类型。

    请参阅this answer to a similar question

    编辑:

    有人谈论能够enforce primitive return types in some cases in Clojure 1.3,但这显然是不断变化的,仍然不适用于序列类型。

    【讨论】:

    • 大部分是真的。您可以在定义接口中键入提示,生成的接口将具有正确类型的字段。不过,这完全是出于互操作目的,您通常不强制执行静态类型是正确的。
    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 2017-07-27
    • 2012-05-29
    • 2012-01-27
    • 2011-09-13
    • 2010-11-04
    • 2011-06-22
    • 1970-01-01
    相关资源
    最近更新 更多