使用数组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