Lua 高级教程——闭包(Closure)与 Upvalue
闭包 = 函数 + 它捕获的外部局部变量(Upvalue),可实现私有变量、状态保持。示例:计数器
local function newCounter()
local i = 0-- Upvalue(外部局部变量)
return function()-- 匿名函数(闭包)
i = i + 1
return i
end
end
local c1 = newCounter()
print(c1())-- 1
print(c1())-- 2
local c2 = newCounter()
print(c2())-- 1(独立状态)关键特性
[*]Upvalue 是私有的,外部无法直接访问。
[*]闭包延长 Upvalue 生命周期,函数返回后仍有效。
页:
[1]