使用數組collect和each之間的主要區別是什麼?偏愛?收集和每個之間的顯着差異?
some = []
some.collect do {|x| puts x}
some.each do |x|
puts x
end
使用數組collect和each之間的主要區別是什麼?偏愛?收集和每個之間的顯着差異?
some = []
some.collect do {|x| puts x}
some.each do |x|
puts x
end
array = []
是快捷方式,以限定一個數組對象(長形式:array = Array.new
)
Array#collect
(和Array#map
)返回基於在塊傳遞的代碼的新數組。 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]"
希望這有助於...
+1以獲得清晰簡潔的解釋 – 2010-09-02 20:11:29
非常感謝您的示例。 – RoR 2010-09-02 20:43:21
我也感謝你這麼好的解釋。我在codecademy的用戶論壇上提出了同樣的問題,並得到了兩個自我重要的混亂的迴應。彷彿這是世界上最愚蠢的問題,我應該爲此而感到羞恥。 – 2016-12-12 21:56:59
collect
(或map
)將「保存」在do塊的返回值在一個新的數組,並返回它,例如:
some = [1,2,3,10]
some_plus_one = some.collect {|x| x + 1}
# some_plus_one == [2,3,4,11]
each
只會執行做塊的每個項目並不會保存返回值。
這是紅寶石,而不是回報率,具體..你可以編輯標題。 – randomguy 2010-09-02 20:08:21
已被授權刪除rails標籤,因爲這是一個紅寶石問題 – 2010-09-02 20:10:28