--数字型for 的语法
for i = 1,20,1 do
end
--i为控制变量 将 从初始值1 变化到 目标值 20,其中步长为1。
--可以省略步长 则步长默认为1
for i = 1,20 do
end
--lua数字型的for与c#的for差不多。不过有个地方不一样,就是闭包
local closure
for i=1,50 do
if i == 20 then
closure = function ()
print("closure:"..i)
end
end
end
--按照c#闭包的写法 执行closure将会输出50,然而这里输出的却是20
closure() --closure:20 有此可见每次进到循环体的i都不是第一次声明的i,应该都是重新声明过的
--猜测数字型的for应该是类似于这样的一种写法
do
local var,target,step = 1,50,1
while (step > 0 and var <= target) or (step < 0 and var >= target) do
--每次进入循环体前 都重新声明i
local i = var
do
--block
if i == 10 then
closure = function ()
print("closure:"..i)
end
end
end
var = var + step
end
end
closure()
-----------------------------------------------------
function func()
local i = 1
while i < 50 do
local j = i
if i == 30 then
closure = function ()
print("closure j:"..j)
end
end
i = i + 1
end
end
func()
closure() --closure j:30