lua 巧用weak table
对于lua中的weak table,一切花式用法,都基于以下两个特点:
1. lua的GC是基于引用计数的,而弱引用不增加计数,GC时如果只有弱引用,可以GC
2. lua的weak table, (__mode , k, v, kv),可以是key,value,kv
用途:
这样,就可以处理一些缓存性功能时,既关联了table对象,又不影响它的GC,可以很好的剥离它们的直接关系
local obj = {}
setmetatable(obj, {__mode = "k"})
local statePool = {}
statePool[obj] = "busy"
--obj delete
obj = nil
collectgarbage()
print(statePool[obj] or "obj has been deleted!")