Lua 学习 闭包
先看一个现象
function count()
local i = 6 -- upvalue
return function()
i = i+1
return i
end
end
local c1 = count()
print(c1())
print(c1())
print(c1())
local c2 = count()
print("c2",c2())
这一点 类似于 JavaScript
- function count 返回一个函数; 在 这个函数 外面有一个变量 i ; 是一个 upvalue,
- 函数 c1 是在 count 函数外面执行的, 这时候 lua 会把这个 upvalue (上下文)缓存。就会产生 累加的效果
- 函数 c2 与 函数 c1 是 count 函数 不同的作用域 ; 所以 upvlaue 的变量不会再 两个函数中 (c1,c2)中间传导