Если вы хотите инициализировать со значением по умолчанию или любым другим вводом последовательности, вы можете подать типизированные массивы в into-array
:
(def arr2d
(into-array (repeat 3 (double-array 4 Double/MIN_VALUE))))
double-array
, а другие конструкторы типизированных массивов могут принимать либо значения по умолчаниюзначение или входная последовательность.
(clojure.pprint/pprint arr2d)
[[4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324],
[4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324],
[4.9E-324, 4.9E-324, 4.9E-324, 4.9E-324]]
Существует также функция make-array
, вы просто присваиваете ей тип и размеры, но она не принимает значение по умолчанию:
(make-array Double/TYPE 3 2)
=> #object["[[D" 0x3ae2ca60 "[[D@3ae2ca60"]
(def arr2d (make-array Double/TYPE 3 4))
Вы можете использовать aset
для установки значения по заданным индексам:
(aset arr2d 1 1 5)
=> 5
Это изменило массив на месте, и печать arr2d
отражает, что:
(clojure.pprint/pprint arr2d)
;; [[0.0, 0.0, 0.0, 0.0], [0.0, 5.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]]