В clojure.core есть функция alength
для получения длины массивов Java
(alength (.getBytes "x" "UTF-8"))
;;=> 1
Насколько я знаю, массивы Java на самом деле не являются классами с полем с именем length
,хотя синтаксис Java myarray.length
предполагает иное.Получение длины массива требует специальной инструкции байтового кода, а не типичного доступа к полю.Вот почему синтаксис взаимодействия доступа к полям в Clojure в этом случае приводит к исключению.И по той же причине требуется специальная функция alength
.