Lua中如何在for循环内部手动推进循环控制索引变量?
Lua中手动控制for循环索引变量的方法
Lua的数值for循环(即for i=起始值, 结束值, 步长形式)里,循环的索引变量是由Lua内部维护的——每次迭代开始前,Lua都会根据初始设定的起始值、结束值和步长重新计算下一个i的值,你在循环体里给i赋值根本不会影响到下一次迭代的索引。就像你贴的这段代码:
for i=1,5 do io.write(("i: %d; "):format(i)) i = i + 2 -- 这里改i没用,循环根本不看这个修改 end
运行这段代码会输出i: 1; i: 2; i: 3; i: 4; i: 5; ,完全没达到你想跳步的效果。
要实现循环内手动推进索引的需求,最简单的办法是改用while循环,因为while循环的索引变量完全由你自己掌控:
local i = 1 while i <= 5 do io.write(("i: %d; "):format(i)) i = i + 2 -- 这里的修改直接决定下一次循环的i值 end
这段代码运行后会输出i: 1; i: 3; i: 5; ,正好是你想要的效果。
要是你坚持想用类似for循环的写法,也可以自定义迭代器,但while循环是最直观、最容易维护的方案。
内容的提问来源于stack exchange,提问作者Ronnie Smith
相关产品推荐
相关产品推荐

