那么,这个程序最重要的是 i += 1 这行。如果没有这行 i 的值永远为 1,而 i <= 5 的条件也会一直满足,就会成为无限循环。因此,这里每次都向 i 加上 1 使得 i 的值依次变为 2、3、4、5、6 从而使得循环结束。
变量 a 和 i 的数值变化,如下表所示。
循环 a 的值 i 的值
初始状态 0 1
1 次后 1 2
2 次后 3 3
3 次后 6 4
4 次后 10 5
5 次后 15 6
循环 5 次后,在 a 的数值里面实际上进行了 1+2+3+4+5 的计算,i 的值也超过了 5 而执行 end 使得循环结束。
然后以 p 命令显示最终 a 的值,就会显示出答案 15。
变化范围
数值的范围,例如类似于「从 1 到 5」这样的概念就称为变化范围。
1..5
上述示例表示「从 1 到 5」的意思。使用 .. 运算符,就能作成一个变化范围。
而且,使用 ... 运算符也可以。
1...5
和 .. 不同的是「不含最后一个数」。所以,这种情况实际上表示的是「从 1 到 4」的意思。
for ~ in ~ end
想在变化范围表示的范围内循环的情况下使用 for 语句。
a = 0 # 为变量 a 赋值代入 0。
for i in 1..5 # 变量 i 的值按从 1 到 5 的范围变化,
a += i # 变量 a 加上 i 的值。
end # 循环结束。
p a # 显示计算结果。
这个示例和使用 while 语句的示例完全相同,也是求从 1 到 5 这五个数字总和的程序,但比使用 while 的情况更加简洁。在 while 中变量 i 加上 1 表示的是从 1 到 5 的范围,然而在 for 中是用变量 i 按「从 1 到 5 的范围」的顺序代入来表示。表面看起来不同,但实际上进行的是意思完全相同的处理。