2012-08-07 43 views
3

是否有針對c方式,你會使用reference system除了這些引用是弱,可能會隨時收集垃圾以同樣的方式來引用的Lua 5.2的對象嗎?換句話說,是否有所有當前Lua對象的註冊表不影響對象的引用計數?尋求一個「弱的Lua註冊表」

+0

http://lua-users.org/wiki/WeakTablesTutorial – 2012-08-08 22:31:35

回答

7

您可以通過引入一個間接層做到這一點 - 而不是直接在註冊表中存儲的值,並迫使它要弱,這樣做:

  1. 創建一個表
  2. 讓它弱設置一元表{__mode = "v"}
  3. 商店使用一些已知的,但唯一的密鑰
  4. 將所有你想在這個表
  5. 使用此表中存儲的追蹤對象本表中的註冊表在註冊表中,而不是註冊表本身查找所有對象

注意,沒有「所有的Lua對象的軌跡」(像紅寶石ObjectSpace),除非你使用一些重型堅持不懈的人Pluto。您只能訪問自己存儲/跟蹤的對象。