clojure - 如何键入提示数组?

标签 clojure type-hinting

我有以下记录:

(defrecord Signal [samples ^double sample-rate ^double scaling-factor])

如何指定 samples成为一个双数组?

我正在使用 clojure 1.2.0

编辑:

@dreish 当我调用 (show Signal) 时,我得到以下输出从 levand 更改后:
[35] <init> (Object,double,double)
[36] <init> (Object,double,double,Object,Object)
[37] __extmap : Object
[38] __meta : Object
[39] sample_rate : double
[40] samples : Object
[41] scaling_factor : double

我知道暗示非原始类型只是为了避免反射。来自 http://clojure.org/datatypes
  • 请注意,目前非原始类型的类型提示不会用于约束字段类型或构造函数 arg,但将用于优化其在类方法中的使用

  • 谢谢大家!

    最佳答案

    像这样:

    (defrecord Signal [^doubles samples ^double sample-rate ^double scaling-factor])
    

    Rich Hickey 不久前补充道:

    Added special type hints for primitive arrays - #^ints, #^floats, #^longs, #^doubles



    http://clojure.org/news讨论它是如何工作的。

    我没有 Clojure 环境,看看这是否仍然是最好的方法。我假设 #^ 语法在 1.2 中与 Clojure 中的所有其他类型提示一起更新为 ^

    编辑:关于它的另一篇博文:http://asymmetrical-view.com/2009/07/02/clojure-primitive-arrays.html

    关于clojure - 如何键入提示数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720196/

    相关文章:

    clojure - 为什么 Clojure 编译器不会因类型提示不正确而抛出错误?

    python - 类型提示在 pycharm 2018.1 中并不总是有效?

    python - 如何为自定义类的参数指定类型提示?

    clojure - 为什么我不能在线程宏中使用匿名函数?

    emacs - 如何将次要模式与特定文件或一组基于扩展名的文件相关联?

    Clojure : type hint tower

    web-applications - friend 的 bcrypt-credential-fn 的正确用法是什么?

    clojure - OR 多重过滤 clojure

    python-3.x - Python 类型提示填充了 myclass 对象的双端队列

    Python 3.10 类型提示导致语法错误