天天看點

lua 之弱引用

一個table的弱引用類型是通過其元素表中的__mode字段來決定的,這個字段的值應為一個字元串,如果這個字元串中包含字母'k'/'v'那麼這個table 的value是弱引用,代碼如下:

key = {}
a[key] = 1
key = {}
a[key] = 2
collectgarbage() --強制進行一次垃圾收集
for k, v in pairs(a) do
	print(v)
end
           

結果:2 

第二句複制key = {} 會覆寫第一個key.當收集器運作時,由于沒有其他地方在引用第一個key,是以第一個key就被回收了,并且table中的相應條目也被删除了,至于第二個key,變量key仍引用它,是以它沒有被回收了

注意,lua隻會回收弱引用table中的對象,而像數字和bool這樣的值,是不可以回收的。