We walk and learn
Ruby version: 2.3.0
以指定循环次数执行多次。循环的变量从 0
开始计数。
num.times do |i|
...
end
确定循环开始与结束点的循环。
for i in s .. e do
handle
end
遍历容器元素的循环,既可以遍历数组,也可以遍历散列。
for item in ary do
handle(item)
end
for k, v in hash do
handle(k, v)
end
需要自行处理结束条件的循环。
while cond_true do
handle
end
同 while
语句相反,只有条件不满足时执行循环,当条件满足则结束。
until cond_false do
handle
end
同样用来遍历容器,for .. in ..
是此类型的一种语法糖。
obj.each do |v|
handle(v)
end
适合创建没有终止的循环。注意,此为方法并不是语句。
loop do
handle
end
语法 | 用途 |
---|---|
times方法 | 确定循环次数时使用 |
for语句 | 从对象中取出元素时使用 |
while语句 | 希望自由指定循环条件使用 |
until语句 | 使用while语句不易理解时使用 |
each方法 | 遍历对象元素时使用 |
loop方法 | 不限制循环次数时使用 |
语句 | 用途 |
---|---|
break | 终止程序,跳出循环 |
next | 跳到下一次循环 |
redo | 在相同的条件下重复刚才处理 |
其中 redo
一般较少使用。
..
与 ...
的区别两者都是获得从开始点到结束点的区间。区别在于前者包含结束点,后者不包含结束点(可以想象成多了一个 .
把结束点给挤跑了)。
ary = [1, 2, 3, 4, 5, 6, 7]
ary[1..3] # => [2, 3, 4]
ary[1...3] # => [2, 3]
do ~ end
与 { ~ }
两者都为代码块的写法,没有太大区别。约定俗成的规则为:
do ~ end
{ ~ }
一种原因在于,do ~ end
写在一行不利于阅读,如:
10.times do |i| puts i end