遍历 Ruby 数组
作者:迹忆客
最近更新:2023/03/20
浏览次数:
Ruby 中的数组类包含 Enumerable mixin,因此它有几个横向方法。在本教程中,我们将研究这些可枚举的方法和其他在 Ruby 中遍历数组的方法。
使用 each
方法遍历 Ruby 数组
这是 Ruby 中最常用的迭代器。
示例代码:
fruits = ['Orange', 'Apple', 'Banana']
fruits.each do |fruit|
puts fruit
end
输出:
Orange
Apple
Banana
使用 for
循环遍历 Ruby 数组
此方法可能会产生不良副作用,因此不推荐使用。
示例代码:
fruits = ['Orange', 'Apple', 'Banana']
for fruit in fruits
puts fruit
end
输出:
Orange
Apple
Banana
如果在上面的示例中早先定义了一个 fruit
变量,for
循环将用 fruits
数组的最后一个元素覆盖它。这是一个范围界定问题,其行为如下所示。
示例代码:
fruit = 'Mango'
fruits = ['Orange', 'Apple', 'Banana']
for fruit in fruits
puts fruit
end
puts fruit
输出:
Orange
Apple
Banana
Banana
使用 reverse_each
方法遍历 Ruby 数组
顾名思义,这与 each
方法类似,但顺序相反。
示例代码:
fruits = ['Orange', 'Apple', 'Banana']
fruits.reverse_each do |fruit|
puts fruit
end
输出:
Banana
Apple
Orange
使用 each_with_index
方法遍历 Ruby 数组
此方法在你需要获取数组的每个元素和索引的情况下很有用。
示例代码:
fruits = ['Orange', 'Apple', 'Banana']
fruits.each_with_index do |fruit|
puts "#{index}. #{fruit}"
end
输出:
0. Orange
1. Apple
2. Banana
尽管上面的示例演示了遍历数组的最简单方法,但是当你需要遍历数组并对其中的每个元素执行一些操作时,这些方法通常会派上用场 - 例如,遍历电子邮件地址列表和向他们每个人发送消息。
我们将在本教程中提到的其余方法与上面提到的方法有些不同,它们将一个数组转换为另一个数组。
使用 map
方法遍历 Ruby 数组
如果你想修改数组的每个元素并将它们作为新数组,这很有用。
示例代码:
numbers = [2, 4, 6]
doubles = numbers.map do |n|
n * 2
end
puts doubles
输出:
[4, 8, 12]
请注意,还有一个 collect
方法,map
的别名,它们的行为方式相同。
使用 select
方法遍历 Ruby 数组
顾名思义,select
方法允许你仅选择数组中满足特定逻辑条件的特定元素。它还会生成一个新数组。
示例代码:
numbers = [2, 3, 4, 5, 6, 7, 8, 9]
perfect_squares = numbers.select do |n|
Math.sqrt(n) % 1 == 0
end
puts perfect_squares
输出:
[4, 9]
请注意,还有一个 find_all
方法,它是 select
的别名,它们的行为方式相同。
使用 reject
方法遍历 Ruby 数组
reject
方法与 select
方法相反,当你需要拒绝数组的某些特定元素并将其余元素作为新数组返回时,它很有用。
示例代码:
numbers = [-2, -1, 0, 1, 2, 3]
positive_integers = numbers.reject do |n|
n < 1
end
puts positive_integers
输出:
[1, 2, 3]