循环结构在编程语言中是不可或缺的,所以Ruby中的循环也有其自定义的规则。
而我们关注循环结构,要知道两个因素:1) 循环的条件;2) 循环执行的内容
Ruby有一些方式来实现循环结构体:
1. times方法
在前面已经有提到过了,语法如下:
循环次数.times do 循环次数.times { 重复执行的动作 重复执行的动作 end } 也可以在times模块中加入变量 5.times { |i| print "This is the", i+1, " time. \n" } # i变量是从0开始计算的
2. for 语句
语法: for 变量 in 开始数值..结束数值 do 反复执行的动作 end # do是可以省略的 from = 0 to = 20 sum = 0 for i in from..to sum += 1 end 语法: for 变量 in 对象 反复执行的动作 end names = ["Windy", "Cindy", "Jack", "Hugo"] for name in names print name, " likes Ruby. \n" end
第二个语法的for语句,与java中的for each语句非常类似,for (i in list?) {...}
3. while 语句
while语句与JAVA中也是类似的
语法: while 条件 do 反复执行的动作 end a = 1 sum = 0 while a < 10 do sum += a i += a end
4. until 语句
其语法与while语句类似,只是只有条件不符合的时候,才会反复执行循环
语法: until 条件 do 反复执行的动作 end # do可以省略 sum = 0 until sum > 50 sum += 1 end print sum # 以上until循环可以转换成下面的while循环 while !(sum > 50) sum += 1 end
5. each 方法
在前面已经提到过这个方法了,这里就简要记录下语法
对象.each { |变量|
想要反复执行的动作
}
6. loop方法
它是一种没有结束条件的方法,只是不断进行循环处理,示例如下:
loop { print "Ruby" }
循环的控制:
主要有如下关键字:break,next,redo;而在java中,则有break,continue,return
命令 | 用途 |
break | 停止动作,马上跳出循环 |
next | 直接跳到下一个循环 |
redo | 以相同的条件重新执行这一次循环 |
总结:当次数固定时,使用times方法比较好,而其他大部分循环几乎都可以使用while和each方法。