学习lua两天,发觉和以前学习c、c++的感觉差别有点大。。。
在lua的for循环中,想在满足某个条件后,跳过下一次迭代。比如输出1到5,跳过中间的3.一开始写了这样的代码:
for i = 1, 5 do
print(i)
if i == 2 then
i = i+1
end
end
运行发现没有起作用:
1
2
3
4
5
在lua程序设计里面说:
循环过程中不要改变控制变量的值,那样做的结果是不可预知的。如果要退出循环,使用break语句。
看来控制变量的i和循环体的i不是同一个值
看了手册,感觉可以用范围for和迭代器完成这个任务:
local v = 1
for value in function()
print(v)
if v == 2 then
v = v + 2
else
v = v + 1
end
return v
end
do
if value > 5 then
break
end
end
运行发现符合预期想法:
1
2
4
5
完成这个需求就要用到闭包,感觉有点蛋疼,但从这里面也能感到这个lua的函数作为变量的一种有点强