lua闭包函数的理解,
一个upvalue值,升值.
闭包函数自己理解为 一个匿名函数 + 一个upvalue值 .
如以下:
local test = {}
function test.Init()
local number = 0 -> UpValue 值
return function(...) -> 匿名函数
number = number + 1
return number
end
end
local func = test.Init() -> 返回匿名函数的地址.指针
--调用匿名函数,打印返回值
print(func())
print(func())
打印结果为 1 , 2
local last = test.Init()
print(last())
print(last())
打印结果为 1 , 2
在这里 local last和local func 代表两个闭包,拥有不同的upvalue值
闭包函数也可以赋值给一个函数指针使用以下
local test = {}
function test.Init(self, fuc)
return function(...)
return fuc(self) - >闭包 开始处理 upValue值传了进来
end
end
function test.fire(self)
print("开始触发")
end
local fuc = test.Init(test , test.fire) -> 闭包函数 赋值 upValue值
fuc() -> 调用 闭包函数
最后结果 打印
开始触发函数