收集和每个之间的区别?

时间:2010-09-02 19:50:01

标签: ruby collections each

使用数组收集和每个数据之间的主要区别是什么?偏爱?

some = []

some.collect do {|x| puts x}

some.each do |x|
    puts x
end

2 个答案:

答案 0 :(得分:36)

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 :(得分:4)

collect(或map)将“保存”新数组中do块的返回值并返回它,例如:

some = [1,2,3,10]
some_plus_one = some.collect {|x| x + 1}
# some_plus_one == [2,3,4,11]

each只会为每个项执行do块,并且不会保存返回值。