我有以下记录:
(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
谢谢大家!
最佳答案
像这样:
(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/