Jangan lupa bahwa lama tepercaya into
memungkinkan Anda mengambil apa pun yang seq
bisa (daftar, vektor, peta, set, sortir-peta) dan wadah kosong yang ingin Anda isi, dan letakkan into
.
(into [] '(1 2 3 4)) ==> [1 2 3 4] "have a lazy list and want a vector"
(into #{} [1 2 3 4]) ==> #{1 2 3 4} "have a vector and want a set"
(into {} #{[1 2] [3 4]}) ==> {3 4, 1 2} "have a set of vectors want a map"
(into #{} [{1 2} {3 4}]) ==> #{{1 2} {3 4}} "have a vector of maps want a set of maps"
into
adalah pembungkus conj
, yang merupakan abstraksi dasar untuk menyisipkan entri baru secara tepat ke dalam koleksi berdasarkan jenis koleksi. Prinsip yang membuat aliran ini begitu bagus adalah bahwa Clojure dibangun di atas abstraksi yang dapat disusun , dalam hal ini into
di atas conj
di atas koleksi dan seq
.
Contoh di atas akan tetap tersusun dengan baik jika penerima diteruskan pada waktu proses: karena abstraksi yang mendasarinya ( seq
dan conj
) diimplementasikan untuk semua koleksi (dan juga banyak koleksi Java), jadi abstraksi yang lebih tinggi tidak perlu khawatir tentang banyak kasus sudut khusus terkait data.