2013-08-29 11 views
5

में एक वेक्टर से एक नक्शे के निर्माण मैं एक सदिश है कि इस तरह दिखता है:Clojure

["Config" "{}" "Auth" "{}" "Other" "{}"] 

मैं प्रत्येक कुंजी मान युग्म लेते हैं और इसे निम्न मानचित्र में बदलने के लिए करना चाहते हैं:

{"Config" "{}", "Auth" "{}", "Other" "{}"} 

क्लोजर के साथ मैं यह कैसे कर सकता हूं? क्या कोई अंतर्निहित फ़ंक्शन है जो यह करता है?

+0

अभी पहले से ही एक जवाब मिला है, '(assoc {} ["Config" "{}" "Auth" "{}" "अन्य" "{}"] लागू करें। क्या कोई बेहतर है? –

उत्तर

6

उपयोग apply, वेक्टर के लिए इच्छित प्रकार के नक्शे को लागू करने के लिए निर्माता यानी:

(apply hash-map ["Config" "{}" "Auth" "{}" "Other" "{}"]) 

संपादित

this answer के अनुसार आप जिस तरह से आप {} मूल्यांकन के आधार पर अलग नक्शे प्रकार प्राप्त कर सकते हैं

, इसलिए अपनी जरूरतों के लिए उपयुक्त नक्शा कन्स्ट्रक्टर का उपयोग करें।

संपादित

this अलग वस्तु प्रकार शाब्दिक {} द्वारा लौटाए को देखते हुए एक बग प्रतीत होता है।

+0

धन्यवाद, ठीक है! प्रश्न छोड़ने में थोड़ी देर लगती है, अगर किसी को कुछ याद आती है तो मुझे जवाबों को बहुत जल्दी स्वीकार करना पसंद नहीं है। –

+1

"यदि आप वास्तव में '{}' क्या अनुकरण करना चाहते हैं, तो' हैश-मैप 'के बजाय' सरणी-मानचित्र 'का उपयोग करें। " वर्तमान में कार्यान्वित किए जाने पर, स्थिर कुंजी और मानों के साथ एक शाब्दिक मानचित्र '{}' अभिव्यक्ति को हैश-मैप के रूप में भी पार्स किया जाएगा (हालांकि भ्रमित रूप से सरणी-मानचित्र के रूप में मूल्यांकन किया गया है)। ध्यान दें कि शाब्दिक '{: 1,: बी 2,: सी 3} 'का मुख्य क्रम सम्मान नहीं है (संस्करण 1.5 में)। –

+0

@ ए। वेबब I का सुझाव '(प्रकार x)' परिणाम द्वारा किया गया था। फिर यह अलग-अलग मूल्य क्यों देता है? उस भ्रमित मूल्यांकन के कारण? – soulcheck