2012-02-24 15 views

cevap

107

each aynıdır map ve collect, ama map ve collect farklıdır (teknik mapcollect için bir takma ad, ama benim deneyim map daha sık çok kullanılır).

:

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

map ve collect alıcının her bir elemanına uygulanan blok sonuçlarını içeren yeni Array üretmek:

each (Enumerable) alıcıda her bir eleman için kapalı blok gerçekleştirir

Ayrıca Array s'de tanımlanan map!/collect! da; bunlar alıcıyı değiştirin:

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

harita topluluk seçimi versiyonudur https://github.com/bbatsov/ruby-style-guide#map-fine-select-reduce-size –

21

Each blok değerlendirmek ancak Each bloğun değerlendirme sonucu atar ve orijinal dizi döner olacaktır.

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

Map/collect dönüş dizisindeki her bir madde için blok çağrı sonucu olarak yapılan bir dizi.

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