如何编写bytes?返回以下内容的函数:
(bytes? [1 2 3]) ;; => false
(bytes? (byte-array 8)) ;; => true
Run Code Online (Sandbox Code Playgroud)
Nie*_*lsK 12
我以前用这种方式做的就是创建一个这种类型的数组并测试它的类.为了防止每次都创建不必要的实例,请创建一个关闭该特定数组类型的类的函数.
(defn test-array
[t]
(let [check (type (t []))]
(fn [arg] (instance? check arg))))
(def byte-array?
(test-array byte-array))
=> (byte-array? (byte-array 8))
true
=> (byte-array? [1 2 3])
false
Run Code Online (Sandbox Code Playgroud)
Mobyte的例子似乎更简单了,似乎我会在我使用它的地方做一些重构:)
mob*_*yte 10
(defn bytes? [x]
(if (nil? x)
false
(= (Class/forName "[B")
(.getClass x))))
Run Code Online (Sandbox Code Playgroud)
更新.这里已经提出了同样的问题测试一个对象是否是Clojure中的Java原始数组.并且google在你的问题上给出了那个页面"如何检查clojure对象是否是一个字节数组?" ;)