Blitz Lua Keeper

lua-users home
wiki

本頁面簡要描述 BlitzLua「守護程式」,此機制由 BlitzLua 提供,用於允許 (純) Lua 物件的明確完成。

簡介

BlitzLua 是用 BlitzMAX 寫成的 Lua 執行環境,BlitzMAX 是一種用於 Windows 98/ME/2000/XP、MacOS X 與 Linux 的跨平台 BASIC 編譯器和執行時期系統。BlitzMAX 物件會以「輕量使用者資料」傳遞到 Lua,而透過傳遞函式的方式來操作這些物件 (使用基礎物件作為函式的第一個參數),而不是使用「方法」。基礎「函式介面」上方會有一個額外圖層,用來將任何 BlitzMAX 物件直接對應到相對應的 Lua 表格。透過「守護程式」,此類表格可以在 Lua 垃圾收集器準備移除該表格時,執行最後的「整理維護」作業 (例如,明確移除相關的 BlitzMAX 物件)。

操作原理

「守護程式」實作在 [Lua FaQ] 中描述的一種機制,用來解答「為什麼 __gc 後設方法無法在表格上運作?」

LuaTable 和「守護程式」現在會彼此參照對方,而 Lua 中不應有任何其他參照指向「守護程式」。只要 LuaTable 沒有被其「守護程式」以外的物件參照,Lua 垃圾收集器便會開始收集這兩個物件

現在,毀滅函式可以執行任何必要的作業來清理 LuaTable 和它相關的 BlitzMAX 物件。當毀滅函式完成 (或失敗) 時,Lua 垃圾收集器會將這兩個物件移除。

參考文獻

--AndreasRozek


RecentChanges · 喜好設定
編輯 · 歷史記錄
最後編輯時間:2007 年 5 月 5 日 下午 10:13 GMT (比較)