一天三盒半 发表于 2026-5-27 14:16:20

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]
查看完整版本: Lua 高级教程——闭包(Closure)与 Upvalue