Blitz Lua 物件介面

lua-users home
wiki

此頁說明 BlitzLua 的「物件介面」,BlitzLua 是一個用 BlitzMAX 所寫的 Lua 執行環境。

BlitzLua 物件介面

物件介面」將 BlitzMAX 類型直接對應到相對應的 Lua「類別」,亦即一個附有對應元表的表格。給定 BlitzMAX 模組的所有類型都存在於一個 Lua 表格中,其名稱即為基礎模組的名稱:例如,在 Lua 中,在模組 BRL.MaxGUI 中找到的 BlitzMAX 類型 TGadget 會由 brl.maxgui.TGadget 複製(其中 brl 是全域表格)。「import」機制可選擇性將給定模組的所有類型設為全域,不需要再以其模組名稱為其加前綴。

命名慣例

由於 Lua 是大小寫敏感語言(不同於 BlitzMAX),因此套用下列命名慣例

有任何不確定性,請考慮類型參考,它是套件的一部分。

參數處理與類型轉換

Lua 函數參數等於對應 BlitzMAX 方法的參數,任何預設值會受到適當考量(亦即,對應的 Lua 參數可能是 nil)。類型會轉換如下

此外

值得注意的細節:當「功能介面」傳遞 BlitzMAX 物件作為「輕量使用者資料」時,「物件介面」僅適用於 Lua「物件」。因此,介面會實作一種搜尋技術以取得指定 BlitzMax 物件的 Lua 表格,反之亦然

因此,傳遞至 BlitzMAX 函式的即是「_Peer」,而從 BlitzMAX 回傳的每個物件都會被搜尋並以其關聯 Lua 表格取代(如果存在此種表格,否則會「立即」建立一個新的表格)

任何 BlitzMAX 常數也會在定義模組所屬的表格中提供 - 其名稱一律使用大寫字母(例如 brl.event.EVENT_WINDOWCLOSE),就像在 BlitzMAX 中一樣。

物件介面的部分詳細說明

介面「類別」提供基於原型差異的繼承(實際上,這表示修改「類別」會立即影響其所有實體,除非修改的欄位由實體「遮蔽」)。此外,它們管理其「_Peer」的壽命:使用「管理員」(請參閱 BlitzLuaKeeper),每個 Lua「物件」都會在垃圾回收器將其從記憶體中移除時收到通知。然後,它會呼叫其 destroy 方法,適當關閉並移除相關 BlitzMAX 同級項目。

同時使用「功能介面」和「物件介面」時,除非你真的知道自己在做什麼,否則不應混合處理 BlitzMAX 物件的函式和 Lua「方法」。不過,使用不處理特定物件的其他函式(不會處理特定物件)是安全的(而且通常是必要的)

與「功能介面」相比,「物件介面」允許使用物件導向標籤,並讓程式設計人員免除自行管理 BlitzMAX 物件的負擔。

物件介面」尚未完成,但預計將於 2007 年 5 月 18 日左右發佈。

--AndreasRozek


最新變更 · 喜好設定
編輯 · 歷程記錄
最後編輯於 2007 年 5 月 18 日上午 7:13 GMT (diff)