Lua for循环
累加模式
for var = exp1, exp2, exp3 do
……
end
exp1初始值
exp2最大值
exp3步长
例如
for i=1,5,2 do
print(i*10)
end
结果:
迭代器泛型模式for
for <var-list> in <exp-list> do
……
end
例如
a={1, 2, x=44, y=55}
for i,v in pairs(a) do
print(i,v)
end
结果
详解:
for var1, var2,… in <explist> do
……
end
等价于
do
local _f1, _2, _n = <explist>
while true do
local var1, var2, … = _f1(_2, _n)
_n= var1
if _n == nil then
break
end
……
end
end
自定义迭代器:
例1:
function CreateItor(i)
local n = 0;
return function()
if n<i then
n=n+1
return n, "abc"
else
return nil
end
end
end
for i,v in CreateItor(5) do
print(i,v)
end
结果
例2:
function Itor(i,n)
if n<i then
n=n+1
return n, "abc"
else
return nil
end
end
for i,v in Itor,5,0 do
print(i,v)
end
结果: