Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Clojure中初始化字节数组_Arrays_Clojure_Bytearray - Fatal编程技术网

Arrays 如何在Clojure中初始化字节数组

Arrays 如何在Clojure中初始化字节数组,arrays,clojure,bytearray,Arrays,Clojure,Bytearray,在Clojure中创建初始化为指定值集合的字节数组的语法是什么 像这样的东西,但那有用 (字节数组[0 1 2 3])(字节数组(映射字节[0 1 2 3])) afaik Clojure没有字节文本 (byte-array [(byte 0) (byte 1) (byte 2)]) 说明: 字节创建一个字节 字节数组创建一个字节[] bytes将其转换为byte[]其他海报给出了很好的答案,效果很好 这只是为了防止您经常这样做,并希望使用宏使语法更整洁: (defmacro make-byt

在Clojure中创建初始化为指定值集合的字节数组的语法是什么

像这样的东西,但那有用

(字节数组[0 1 2 3])

(字节数组(映射字节[0 1 2 3]))

afaik Clojure没有字节文本

(byte-array [(byte 0) (byte 1) (byte 2)])
说明:

字节
创建一个
字节

字节数组
创建一个
字节[]


bytes
将其转换为
byte[]

其他海报给出了很好的答案,效果很好

这只是为了防止您经常这样做,并希望使用宏使语法更整洁:

(defmacro make-byte-array [bytes] 
  `(byte-array [~@(map (fn[v] (list `byte v)) bytes)]))  

(aget (make-byte-array [1 2 3]) 2)
=> 3

字节数组创建字节[],因此不需要调用字节。你是对的。Repl自动装箱原语让我感到困惑。事实上,
字节
强制为
字节
,尽管在1.2中,函数的所有参数都是自动装箱的,所以
字节数组
仍然接收
字节
-s,需要取消装箱。尝试在1.2 REPL中使用
(循环[i(字节0)](递归(字节0))
来验证这一点。好的,如果我使用
(类(字节1))
测试类型,它将生成
java.lang.byte
,因为它在传递到
函数时被装箱,尽管
(字节1)
是一个基本的
字节
。以下是垃圾吗?(类(字节数组[(字节0)(字节1)(字节2)]),它在repl输出中给出奇怪的[B]。正确;从Clojure 1.5开始,它没有字节文字:函数也可以工作,对吗?这个答案打破了:不要写宏!你的示例在Clojure的更高版本(在1.8中测试)中工作。不确定它何时更改。
(defmacro make-byte-array [bytes] 
  `(byte-array [~@(map (fn[v] (list `byte v)) bytes)]))  

(aget (make-byte-array [1 2 3]) 2)
=> 3