先给一个“数值”的for例子,通过该例子,理解数值for的执行过程
for i = 1 , 10 , 1 do
print(i)
end
循环变量为i,
表达式1:i = 1
表达式2:10 --虽说是一个数字,但在lua中也是一个表达式
表达式3:1 --也是一个表达式
循环体:do与end之间的内容,这里是print(i)
执行过程:
先取表达式1(即i=1),该表达式只被执行一次
再取表达式3的符号,如果表达式3的符号为正,那么表达式2就作为for循环的上界,如果表达式3位负,那么表达式2就作为for循环的下界
再将循环变量i的值与表达式2进行比较,比较规则为:
如果表达式3为正,那么判断循环变量 i 的值是否小于等于表达式2,如果为真,执行循环体,然后将循环变量 i 加上表达式3,如果为假,for循环结束
如果表达式3为负,那么判断循环变量 i 的值是否大于表达式2,如果为真,执行循环体,然后将循环变量 i 加上表达式3,如果为假,for循环结束
所以,上面for循环结束后,i 的值为10
如果将上面的表达式改为如下,那么该for循环会是一个死循环
for i = 10 , 10 , 0 do
print(i)
end