आइए यह मत भूलो कि भरोसेमंद पुराना into
आपको कुछ भी लेने में seq
सक्षम बनाता है (सूची, वेक्टर, मानचित्र, सेट, सॉर्ट-मैप) और एक खाली कंटेनर जिसे आप भरना चाहते हैं, और इसे डालते 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
चारों ओर एक आवरण है conj
, जो संग्रह के प्रकार के आधार पर एक संग्रह में उचित रूप से नई प्रविष्टियां डालने के लिए आधार अमूर्त है। सिद्धांत यह है कि इस प्रवाह इतनी अच्छी तरह से करता है कि Clojure पर निर्माण है composable कपोल-कल्पना , इस मामले में into
की चोटी पर conj
संग्रह के शीर्ष और पर seq
।
उपरोक्त उदाहरण अभी भी अच्छी तरह से रचना करेंगे यदि प्राप्तकर्ता को रन टाइम में पारित किया जा रहा था: क्योंकि अंतर्निहित सार ( seq
और conj
) सभी संग्रह (और जावा के कई संग्रह भी) के लिए कार्यान्वित किए जाते हैं, इसलिए उच्च सार को चिंता करने की आवश्यकता नहीं है डेटा-संबंधित कोने के बहुत से मामलों के बारे में।