Подтвердить что ты не робот

Как проверить, является ли объект clojure байтовым массивом?

Как написать функцию bytes?, которая возвращает следующее:

(bytes? [1 2 3]) ;; => false
(bytes? (byte-array 8)) ;; => true
4b9b3361

Ответ 2

То, как я это делал до сих пор, создавал массив этого типа и тестировал его класс. Чтобы предотвратить создание ненужного экземпляра каждый раз, создайте функцию, которая закрывается над классом этого конкретного типа массива.

(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

Пример Mobyte кажется намного проще, хотя, похоже, у меня будет некоторый рефакторинг, где я использовал это:)

Ответ 3

Clojure.core версии 1.9 и выше поддерживает bytes? функция. Здесь ссылка Clojuredocs