में अनुक्रम से तत्व प्राप्त करें मैं समझता हूं कि क्लोजर में सूचियों और वैक्टरों को अधिकांश स्थितियों में लगभग एक दूसरे के रूप में उपयोग किया जा सकता है। यहाँ एक सरल मामले कि मुझेक्लोजर
(nth [2 4] 0) ;=> 2
(nth '(2 4) 0) ;=> 2
(get [2 4] 0) ;=> 2
(get '(2 4) 0) ;=> nil -- wtf???
get
वार्ता एक महत्वपूर्ण मानचित्रण के प्रलेखन को हैरान कर दिया है, लेकिन यह वैक्टर या सेट ठीक से काम करता है। nth
का दस्तावेज़ीकरण भी get
का उल्लेख करता है, जो कि केवल अंतर-मामलों में उनके मतभेदों के बारे में बात करता है।
वास्तविक दुनिया की स्थिति जहां मुझे इस अजीब व्यवहार का सामना करना पड़ा था, यह था कि मैंने एक याम फ़ाइल लोड की थी। इसके परिणामस्वरूप नक्शे और सूचियों की घोंसला वाली संरचना हुई। मैं get-in
के साथ एक तत्व का उपयोग करना चाहता था।
(def form (parse-yaml some-yaml-file))
(def best-friend (get-in form [:friends 0 :first-name]))
यह काम नहीं करता, क्योंकि get-in
get
आंतरिक रूप से उपयोग करता है। तो मेरे पास सैद्धांतिक और व्यावहारिक प्रश्न है:
- क्या यह व्यवहार
get
सही और अपेक्षित माना जाता है? यदि हां, तो कृपया बताएं क्यों। - मैप्स और सूचियों की ऐसी संरचना में घोंसला वाले तत्व का उपयोग कैसे कर सकता हूं?
पिरोया संस्करण के लिए +1, मैं इसके बारे में नहीं सोचा –