【发布时间】:2015-04-30 18:33:39
【问题描述】:
我正在阅读“在 Lua 中编程”,但我不理解这段代码中 Lua 中函数的行为:
function newCounter ()
local i = 0
return function () -- anonymous function
i = i + 1
return i
end
end
c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
在我看来,每个调用c1() 都应该返回1,因为i 在newCounter() 的开头被初始化为零。但它看起来像线
local i = 0
在c1() 的调用中被跳过。 newCounter() 表现得像对象而不是函数。对Scheme和C#有点了解,所以对一流的函数比较熟悉。函数返回函数对我来说没问题,但它如何在调用之间存储i 的值?
【问题讨论】: