Lua 弱引用


--弱引用

local a = {}
local b = { __mode = "k"  --[[or v]]}
setmetatable(a, b)

--局部TableKey
local localKey = {}
localKey.name = "localKey"
a[localKey] = 1
local localKey = {}
localKey.name = "localKey"
a[localKey] = 2
localKey = {}
localKey.name = "localKey"
a[localKey] = 3


--全局TableKey
gobalKey = {}
gobalKey.name = "gobalKey"
a[gobalKey] = 4
gobalKey = {}
gobalKey.name = "gobalKey"
a[gobalKey] = 5


collectgarbage();


--在这个例子中 gobal的Key会被回收 至于local域内 localKey如果被重新赋值 则被覆盖的会被回收 
--注意 如果是使用同名变量重新创建的TableKey则不会被回收
for k, v in pairs(a) do
	print(k.name,v)
	--[[
		localKey	1
		gobalKey	5
		localKey	3
	]]
end

猜你喜欢

转载自blog.csdn.net/qq_29094161/article/details/82839292
今日推荐