2012-02-24 35 views

उत्तर

107

eachmap और collect, लेकिन map और collect से अलग हैं एक ही है (तकनीकी रूप से mapcollect के लिए एक उपनाम है, लेकिन मेरे अनुभव map में अधिक बार एक बहुत प्रयोग किया जाता है)।

:

[1,2,3,4].each {|n| puts n*2} 
# Outputs: 
# 2 
# 4 
# 6 
# 8 

map और collect एक नया Array रिसीवर के प्रत्येक तत्व के लिए लागू किया ब्लॉक के परिणामों से युक्त उत्पादन:

each (Enumerable) रिसीवर में प्रत्येक तत्व के लिए संलग्न ब्लॉक करता है

[1,2,3,4].map {|n| n*2} 
# => [2,4,6,8] 

map!/collect!Array एस पर परिभाषित किया गया है; वे घर में रिसीवर को संशोधित:

a = [1,2,3,4] 
a.map {|n| n*2} # => [2,4,6,8] 
puts a.inspect # prints: "[1,2,3,4]" 
a.map! {|n| n+1} 
puts a.inspect # prints: "[2,3,4,5]" 
+2

मानचित्र समुदाय-चुना गया संस्करण है https://github.com/bbatsov/ruby-style-guide#map-fine-select-reduce- आकार –

21

Each ब्लॉक का मूल्यांकन लेकिन Each ब्लॉक के मूल्यांकन का परिणाम फेंक देता है और मूल सरणी देता होगा।

irb(main):> [1,2,3].each {|x| x*2} 
=> [1, 2, 3] 

Map/collect वापसी एक सरणी सरणी में प्रत्येक आइटम के लिए ब्लॉक बुला के परिणाम के रूप का निर्माण किया।

irb(main):> [1,2,3].collect {|x| x*2} 
=> [2, 4, 6] 

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

  • कोई संबंधित समस्या नहीं^_^