Ruby'de each
, map
ve collect
arasındaki işlevler arasında herhangi bir fark var mı?Harita ile her biri arasındaki fark nedir ve toplanır?
55
A
cevap
107
each
aynıdır map
ve collect
, ama map
ve collect
farklıdır (teknik map
collect
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]"
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]
harita topluluk seçimi versiyonudur https://github.com/bbatsov/ruby-style-guide#map-fine-select-reduce-size –