查看: 29|回复: 0

Lua 高级教程——闭包(Closure)与 Upvalue

[复制链接]

48

主题

75

回帖

1991

积分

金牌会员

积分
1991
QQ
发表于 2026-5-27 14:16:20 | 显示全部楼层 |阅读模式
闭包 = 函数 + 它捕获的外部局部变量(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 生命周期,函数返回后仍有效。




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表