携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
一、循环控制语句
循环语句常用与遍历字符串数组等,Ruby 中提供了 while, until 和 for 3 个关键字用于循环语句。
while 循环
Ruby 中 while 循环的用法如下:
while 条件表达式 [do]
...
end
当条件表达式为 true 时,重复执行循环体的代码,当条件表达式为 false 时,跳出循环。
i = 0
while i < 10
puts i
i += 1
end
执行上述代码,输出结果如下:
0
1
2
3
4
5
6
7
8
9
until 循环
until 循环的用法与 while 循环的用法相反,until 后表达式为 false 时才会执行循环体的代码,直到 until 后表达式为 true 时停止循环。
i = 0
until i > 10
puts i
i += 1
end
执行上述代码,输出结果如下:
0
1
2
3
4
5
6
7
8
9
10
for 循环
Ruby 中的 for 循环只有一种用法:
for 循环变量 in 范围表达式 [do]
···
end
for 语句在范围表达式中不断迭代运行包含的代码,如果需要输出 1~10 的数字,可以这样:
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
puts i
end
这种方式比较繁琐,如果使用区间则会简便很多
for i in (1..10)
puts i
end
for 语句实际上是通过调用范围表达式对象的 each 方法来循环执行的,其中 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 是一个数组对象,而 (1..10) 是一个区间对象,它们都可以调用 each 方法来实现遍历或者循环。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].each do |i|
puts i
end
(1..10).each do |i|
puts i
end
其中 |i| 就表示定义一个循环变量 i,这种遍历的方式在 Ruby 代码中更常用。
除了数组和范围两个对象之外,字符串对象也有 each_char 方法来遍历字符串中的每一个字符
"I am SPriderMan".each_char do |c|
puts c
end
除此之外字符串还有 each_byte 和 each_line 等方法。
在循环过程中很可能需要跳出循环,Ruby 提供了 break、redo 和 next 几个关键来改变循环的过程。
- break 用于跳出整个循环体
- next 用于直接跳到下一个循环周期
- redo 相当于重复当前循环周期
(1..10).each do |i|
puts i
break if i > 5
end
执行上述代码,输出结果如下:
1
2
3
4
5
6
当 i = 6 时 if 后表达式为 true,执行 break 语句跳出整个循环,所有输出的 i 的值为 1~6
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].each do |i|
next if i % 2 == 0
puts i
end
执行上述代码,输出结果如下:
1
3
5
7
9
当 i / 2 == 0 时执行 next,既跳出当前循环,继续执行下一个循环,所以会输出 i / 2 != 0 的数字。
Ruby 中 next 关键字与 Python 和 Java 循环中的 continue 关键字的作用是一样的,用于跳出当前循环,继续执行下一次循环。