12 控制结构之迭代器

在上一篇文章中,我们讨论了控制结构之循环语句,了解了如何使用诸如whilefor等语句来控制程序的执行流。然而,Ruby还提供了强大的迭代器,使得对集合(如数组和哈希)进行操作变得更加方便和优雅。在本篇中,我们将深入探讨 Ruby 中的迭代器,特别是如何在日常编程中有效使用它们。

什么是迭代器

迭代器是 Ruby 中用于遍历集合(数组、哈希等)的特殊方法。与传统的循环语句相比,迭代器可以更简洁地表达对集合的操作,代码可读性和可维护性更强。

常见的迭代器

Ruby 中有多种常用的迭代器,以下是一些基本的:

  1. each
  2. map
  3. select
  4. reject
  5. reduce

接下来,我们逐一介绍这些迭代器的使用方式。

1. each

each 是最常用的迭代器之一,用于遍历数组的每一个元素。

1
2
3
4
fruits = ["apple", "banana", "cherry"]
fruits.each do |fruit|
puts "I like #{fruit}"
end

在这个示例中,each 遍历 fruits 数组,并对每个元素执行块中的代码。输出结果为:

1
2
3
I like apple
I like banana
I like cherry

2. map

map 用于遍历集合并返回一个新集合。它会对每一个元素执行块中的代码,并将返回值收集到一个新数组中。

1
2
3
4
5
6
numbers = [1, 2, 3, 4]
squared_numbers = numbers.map do |number|
number ** 2
end

puts squared_numbers.inspect # 输出 [1, 4, 9, 16]

在这个例子中,map 将每个数字平方后生成一个新数组 squared_numbers

3. select

select 用于筛选出符合条件的元素,返回一个新数组。它会对集合中的每个元素应用块,并保留那些返回值为 true 的元素。

1
2
3
4
5
6
numbers = [1, 2, 3, 4, 5]
even_numbers = numbers.select do |number|
number.even?
end

puts even_numbers.inspect # 输出 [2, 4]

此处,select 只选择出偶数。

4. reject

select 相反,reject 用于排除不符合条件的元素,返回新数组。

1
2
3
4
5
6
numbers = [1, 2, 3, 4, 5]
odd_numbers = numbers.reject do |number|
number.even?
end

puts odd_numbers.inspect # 输出 [1, 3, 5]

在此示例中,reject 会输出所有的奇数。

5. reduce

reduce(或 inject)用于将集合的每个元素累积成一个单一的值。它通常被用来执行总和、乘积等操作。

1
2
3
4
5
6
numbers = [1, 2, 3, 4]
sum = numbers.reduce(0) do |total, number|
total + number
end

puts sum # 输出 10

在这个例子中,reduce0 开始,将数组中的所有数字相加。

小结

本章中,我们详细探讨了 Ruby 中的迭代器,学习了 eachmapselectrejectreduce 的基本用法。使用这些迭代器可以让我们的代码简洁且易于理解。在下一篇文章中,我们将切换主题,讨论如何定义方法以及使用变量,深入理解 Ruby 的灵活性和强大之处。

迭代器是 Ruby 的一大特性,灵活使用它们将极大提高你的编程技能,让你的代码更加优雅。希望通过本篇的介绍,能够帮助你在日后的编程中充分利用这些工具。

下篇内容将继续深入探讨 Ruby 的核心概念,敬请期待!

12 控制结构之迭代器

https://zglg.work/ruby-lang-zero/12/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论