For loop 在循环执行时递减循环计数器
我试图在循环运行时减少for循环的计数器。不幸的是,Lua似乎不允许这样。这段代码应该永远运行:For loop 在循环执行时递减循环计数器,for-loop,lua,counter,For Loop,Lua,Counter,我试图在循环运行时减少for循环的计数器。不幸的是,Lua似乎不允许这样。这段代码应该永远运行: for i = 1, 100 do print (i) i = i - 1 end 但事实上,它只是简单地打印了系列1-100。这是故意的吗?如果是,我如何减少运行循环的计数器(例如,因为当前循环被取消资格,应该再次运行) 这是设计的。发件人: 3.3.5–对于报表 在循环开始之前,所有三个控制表达式只计算一次。它们都必须是数字 因此,在循环中修改i的值不会改变循环的运行方式 fo
for i = 1, 100 do
print (i)
i = i - 1
end
但事实上,它只是简单地打印了系列1-100。这是故意的吗?如果是,我如何减少运行循环的计数器(例如,因为当前循环被取消资格,应该再次运行) 这是设计的。发件人:
3.3.5–对于报表
在循环开始之前,所有三个控制表达式只计算一次。它们都必须是数字
因此,在循环中修改i
的值不会改变循环的运行方式
for i = 10, 1, -1 do
print(i)
end
如果要在表格中后退,请执行以下操作:
for i = #SomeTable, 1, -1 do
print(SomeTable[i].someproperty)
end
上面的于浩链接到了正确的手册页面,但引用了错误的部分 这是正确的报价 等同于代码:
do
local var, limit, step = tonumber(e1), tonumber(e2), tonumber(e3)
if not (var and limit and step) then error() end
while (step > 0 and var <= limit) or (step <= 0 and var >= limit) do
local v = var
block
var = var + step
end
end
do
局部变量、极限、阶跃=tonumber(e1)、tonumber(e2)、tonumber(e3)
如果不是(变量、限制和步骤),则错误()结束
while(步骤>0和var)请不要混淆和。这两种语言不同。“Lua”是一个名称,在葡萄牙语中表示“Moon”。请不要将其写为“Lua”,这既难看又令人困惑,因为它成为了不同人群的首字母缩略词。如果你想要无限循环,只需使用,而true do…end
我不想要无限循环。我想在某些条件下减少循环计数器。那么,我该如何着手解决这个问题?我需要改变循环运行的方式它正在执行时。@Drakestar您可以使用while
循环或repeat
循环。该引号中的“控制表达式”指的是for循环的边界(在本例中只是数字),而不是退出条件。这并不能回答问题。
do
local var, limit, step = tonumber(e1), tonumber(e2), tonumber(e3)
if not (var and limit and step) then error() end
while (step > 0 and var <= limit) or (step <= 0 and var >= limit) do
local v = var
block
var = var + step
end
end