Ruby 简明教程

Ruby - Iterators

迭代器只不过是集合支持的方法。存储一组数据成员的对象称为集合。在 Ruby 中,数组和哈希可以称为集合。

迭代器依次返回集合的所有元素。这里我们将讨论两个迭代器,each 和 collect。让我们详细了解一下它们。

Ruby each Iterator

each 迭代器返回数组或哈希的所有元素。

Syntax

collection.each do |variable|
   code
end

为集合中的每个元素执行代码。此处,集合可以是一个数组或一个 ruby 哈希。

Example

#!/usr/bin/ruby

ary = [1,2,3,4,5]
ary.each do |i|
   puts i
end

这会产生以下结果 −

1
2
3
4
5

你总是将 each 迭代器与一个块关联起来。它一次向块返回数组的每个值。该值存储在变量 i 中,然后显示在屏幕上。

Ruby collect Iterator

collect 迭代器返回集合的所有元素。

Syntax

collection = collection.collect

collect 方法不一定总是与一个块相关联。collect 方法返回整个集合,无论它是一个数组还是哈希。

Example

#!/usr/bin/ruby

a = [1,2,3,4,5]
b = Array.new
b = a.collect
puts b

这会产生以下结果 −

1
2
3
4
5

NOTE − collect 方法不是在数组之间进行复制的正确方法。还有另一种称为 clone 的方法,应该使用该方法将一个数组复制到另一个数组中。

通常在你希望使用每个值来获取新数组时使用 collect 方法。例如,此代码生成包含 a 中每个值的 10 倍的数组 b。

#!/usr/bin/ruby

a = [1,2,3,4,5]
b = a.collect{|x| 10*x}
puts b

这会产生以下结果 −

10
20
30
40
50