时间:2021-05-22
看以下代码:
复制代码 代码如下:
for i=1,2 do
print(i)
i=3
end
输出是什么?如果习惯了C/C++语言,会觉得因为改变了控制变量i为3,所以在执行第二次循环体之前判断不通过,所以输出是1。
但结果输出是1和2,即虽然改变了i,但循环还是执行了2次。这是为什么呢?
看了lua的源代码,发现在语法分析阶段,表达式中的i(也叫控制变量)和循环体中的i并不是一个值,其实表达式中的i叫internal index,循环体中的i叫external index。
所以在循环体中并没有改变表达式中的i的值。
至于为什么lua要这样做,估计是为了安全吧,怕在循环体中不经意地改变了表达式的i,从而产生bug。
另外,在Progammming in Lua一书中也提到不要在循环体内修改控制变量(实际修改的是external index)的值,否则会有不可预知的结果。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Lua编程语言允许使用一个循环内嵌另一个循环。下文将介绍几个例子来说明这一概念。语法在Lua中嵌套循环语法语句如下:复制代码代码如下:forinit,max/m
与for和while循环不同,在循环的顶部测试循环条件,Lua编程语言的repeat...until循环检查循环底部的状态。repeat...until循环类似
在Lua编程语言中的while循环语句,只要给定的条件为真时将重复执行的目标语句。语法Lua编程语言中的while循环的语法是:复制代码代码如下:while(c
Lua的循环和C语言的循环的语法其实差不多,所以,理解起来就很好理解的啦,所以实现也很简单,跟C没什么两样,都差不多。案例如下:test1.lua--1、whi
for循环是一个循环控制结构,可以有效地编写需要执行的特定次数的循环。语法Lua编程语言的for循环的语法是:复制代码代码如下:forinit,max/minv