Đừng quên rằng cái cũ đáng tin cậy into
cho phép bạn lấy bất cứ thứ gì seq
có thể (danh sách, vectơ, bản đồ, tập hợp, bản đồ được sắp xếp) và một vùng chứa trống mà bạn muốn lấp đầy và đặt into
nó.
(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
là một trình bao bọc xung quanh conj
, là phần trừu tượng cơ sở để chèn các mục nhập mới một cách thích hợp vào một tập hợp dựa trên loại tập hợp. Nguyên tắc làm cho dòng chảy này trở nên độc đáo là Clojure được xây dựng dựa trên sự trừu tượng có thể kết hợp , trong trường hợp này into
là conj
trên đầu trang của bộ sưu tập và seq
.
Các ví dụ trên sẽ vẫn soạn tốt nếu người nhận được chuyển vào lúc chạy: bởi vì các phần trừu tượng cơ bản ( seq
và conj
) được triển khai cho tất cả các tập hợp (và nhiều tập hợp của Java cũng vậy), vì vậy các phần trừu tượng cao hơn không cần phải lo lắng về rất nhiều trường hợp góc liên quan đến dữ liệu đặc biệt.