रुबी में, each
, map
, और collect
की कार्यक्षमताओं के बीच कोई अंतर है?मानचित्र, प्रत्येक के बीच क्या अंतर है, और एकत्रित करें?
55
A
उत्तर
107
each
map
और collect
, लेकिन map
और collect
से अलग हैं एक ही है (तकनीकी रूप से map
collect
के लिए एक उपनाम है, लेकिन मेरे अनुभव 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]"
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]
मानचित्र समुदाय-चुना गया संस्करण है https://github.com/bbatsov/ruby-style-guide#map-fine-select-reduce- आकार –