📜  红宝石 |迭代器的类型(1)

📅  最后修改于: 2023-12-03 15:11:37.021000             🧑  作者: Mango

Ruby | 迭代器的类型介绍

在 Ruby 中,迭代器可以帮助我们更加优雅地对集合进行操作,而 Ruby 中内置了多种不同类型的迭代器,可以满足不同场景下的需求。

迭代器类型
each

each 方法是最常用的迭代器之一。它可以对集合中的每个元素进行遍历,使用 do…end 或者 {} 包含迭代代码,可以看下面的例子:

array = [1, 2, 3]
array.each do |element|
  puts element
end

输出:

1
2
3
times

如果需要重复某些操作,可以使用 times 迭代器,该迭代器的参数为重复的次数:

3.times do
  puts "hello"
end

输出:

hello
hello
hello
map

如果需要在集合中对每个元素进行处理,并返回一个新的集合,就可以使用 map 迭代器:

array = [1, 2, 3]
new_array = array.map do |element|
  element * 2
end
puts new_array.inspect

输出:

[2, 4, 6]
select

select 迭代器可以对集合中的所有元素进行筛选,返回满足条件的元素:

array = [1, 2, 3, 4, 5]
even_numbers = array.select do |element|
  element % 2 == 0
end
puts even_numbers.inspect

输出:

[2, 4]
inject

inject 迭代器可以对集合中的所有元素进行累计计算,将上一次的计算结果作为下一次的参数:

array = [1, 2, 3, 4, 5]
sum = array.inject do |result, element|
  result + element
end
puts sum

输出:

15
each_with_index

如果需要在迭代器中获取元素在集合中的下标,可以使用 each_with_index 迭代器:

array = ["a", "b", "c"]
array.each_with_index do |element, index|
  puts "#{index}: #{element}"
end

输出:

0: a
1: b
2: c
总结

Ruby 中内置了多种不同类型的迭代器,可以满足不同场景下的需求。掌握这些迭代器可以帮助我们更加优雅地对集合进行操作。