在Lua中使用闭包出现了无限循环。

我不明白为什么这段 Lua 代码会一直循环执行,我的理解是它只会执行一次。能有人解释一下吗?

function testCounter()
        return function ()
                print("test function called")
                return 1
        end
end

for v in testCounter() do
        print(v)
end
点赞
用户2765603
用户2765603

正如 Egor Skriptunoff 所说,for 循环使用由 testCounter() 返回的函数作为“next”函数。由于它从未返回“nil”,因此循环永远不会退出。

2015-05-28 10:59:13