2010-09-02 15 views
11

सरणी का उपयोग करके संग्रह और प्रत्येक के बीच मुख्य अंतर क्या है? पसंद?संग्रह और प्रत्येक के बीच अलग अंतर?

some = [] 

some.collect do {|x| puts x} 

some.each do |x| 
    puts x 
end 
+3

यह रूबी, है न आतंक विरोधी, विशिष्ट आप .. शीर्षक संपादित कर सकते हैं। – randomguy

+0

रेल टैग को हटाने के लिए पुनः प्रयास किया गया क्योंकि यह एक रूबी प्रश्न –

उत्तर

35

array = [] एक सरणी वस्तु (array = Array.new लंबे फार्म) को परिभाषित करने के लिए एक शॉर्टकट है। Array#each सरणी के प्रत्येक तत्व पर एक ऑपरेशन (ब्लॉक द्वारा परिभाषित) करता है।

मैं इस तरह इकट्ठा का प्रयोग करेंगे:

array = [1, 2, 3] 
array2 = array.collect {|val| val + 1} 

array.inspect # => "[1, 2, 3]" 
array2.inspect # => "[2, 3, 4]" 

और इस तरह प्रत्येक:

array = [1, 2, 3] 
array.each {|val| puts val + 1 } 
# >> 2 
# >> 3 
# >> 4 
array.inspect # => "[1, 2, 3]" 

आशा इस मदद करता है ...

+2

+1 –

+0

उदाहरण के लिए बहुत बहुत धन्यवाद। – RoR

+0

मैं भी इस तरह के एक अच्छा स्पष्टीकरण के लिए धन्यवाद। मैंने कोडकैमी के उपयोगकर्ता मंच पर एक ही सवाल पूछा और कुछ आत्म-महत्वपूर्ण झटके से दो संवेदनात्मक प्रतिक्रियाएं प्राप्त कीं। जैसे कि यह दुनिया में सबसे कमजोर सवाल था, और मुझे यह पूछने के लिए शर्मिंदा होना चाहिए। –

4

collect (या map) "सेव" होगा ब्लॉक की वापसी मान एक नई सरणी में और इसे वापस, उदाहरण:

some = [1,2,3,10] 
some_plus_one = some.collect {|x| x + 1} 
# some_plus_one == [2,3,4,11] 

each केवल प्रत्येक आइटम के लिए ब्लॉक कर निष्पादित करेंगे और वापसी मूल्य को बचा नहीं होगा।

Array#collect (और Array#map) कोड ब्लॉक में पारित के आधार पर एक नई सरणी वापसी:

+0

आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। तो मूल रूप से संग्रह के साथ, एक ही समय में ब्लॉक के माध्यम से जा रहा है यह मूल्यों को एक नई सरणी में भी सहेज रहा है। तो एक .collect कुछ हद तक कुछ है, लेकिन प्रत्येक ब्लॉक से वापसी मूल्य के साथ एक सरणी लौटने के साथ? तो इकट्ठा और नक्शा एक ही बात है? नक्शा बहिष्कृत या कुछ भी है? किसी और के ऊपर कोई वरीयता? – RoR

+3

'मानचित्र' और 'संग्रह' एक ही चीज़ (एक ही विधि) हैं, यह सिर्फ अलग नामकरण सम्मेलन है। एक स्पष्ट और संक्षिप्त स्पष्टीकरण के लिए – adamse

संबंधित मुद्दे