2012-05-27 7 views
16

क्या क्लोजर 1.3+ में (= m (zipmap (keys m) (vals m))) पर भरोसा करना ठीक है?क्लोजर के मानचित्र: एक ही क्रम में चाबियाँ और vals हैं?

होने इस व्यवहार कुछ स्थितियों में थोड़ा और अधिक पठनीय कोड के लिए बनाता है, जैसे

(defn replace-keys [smap m] 
    (zipmap (replace smap (keys m)) (vals m))) 

बनाम

(defn replace-keys [smap m] 
    (into {} (for [[k v] m] [(smap k k) v])) 
+1

आम तौर पर मुझे लगता है कि नक्शा डेटा संरचना – Ankur

+0

2013 में "स्थिति" पर विचार करना एक अच्छा विचार नहीं है, क्या इसे कार्यान्वयन विस्तार या वादा माना जाता है? – ToBeReplaced

उत्तर

8

मैं पुष्टि कर सकता हूं (आधिकारिक तौर पर) कि इसका उत्तर हाँ है। keys और vals के लिए डॉकस्ट्रिंग को क्लोजर 1.6 में अपडेट किया गया था (http://dev.clojure.org/jira/browse/CLJ-1302 देखें)।

18

हाँ, clojure के बहुत सारे है कि अगर बदल टूट जाएगा।

मानचित्र पेड़ों के रूप में संग्रहीत हैं और दोनों कार्य एक ही क्रम में एक ही पेड़ पर चलते हैं।

+0

क्या यह कहीं भी प्रलेखित है, या सिर्फ एक कार्यान्वयन विस्तार जो बदल सकता है? –

+0

क्लोजर के Google समूह में [इस प्रश्न] (https://groups.google.com/forum/?fromgroups#!topic/clojure/s1sFVF7dAVs) देखें। यह व्यावहारिक रूप से समान प्रश्न है, यहां तक ​​कि शब्द तक भी। –

+0

हां, इसे _after_ पोस्टिंग मिला, हालांकि मैंने देखा – timc