lua 模擬繼承問題

2021-10-21 20:42:34 字數 867 閱讀 7894

記錄一次lua 繼承呼叫中遇到的問題. 如有錯誤,歡迎指正.討論.

每個專案的類的構造可能不同,但是如果你也遇到了類似的問題.或許可以用同樣的方式解決.

1.首先這是我的父類中定義了乙個方法.如下圖.

2.我的子類是這樣這樣定義並呼叫的.

這樣做當我分別呼叫cursebox/bossbox 方法時,發現父類內位址返回了同乙個位址, 導致父類不在是通用類,而只能屬於乙個子類的父類.如下圖.

3.解決辦法:

如上呼叫方法應該是: self.super.setdata(self,gd)

獲取資料:子類.propsdropgd 而不是 子類.super.propsdropgd(這裡為 nil )

另外一種方式:

父類定義,子類重寫setdata(). 呼叫就和第一種方法(呼叫子類setdata(),在通用super setdata 賦值)不同了, 這裡就直接呼叫父類setdatafather 賦值.

這裡獲取資料同樣適用子類.propsdropgd 獲取.

lua實現繼承

lua本身沒有像c 一樣的繼承功能 但是我們可以自己實現乙個類似c 的繼承功能 書本也有詳細介紹,不過讀起來確實費解,所以本人自己寫了乙個簡單的繼承,一目了然,用來學習很容易入手 完整 基類 people function people new o o o or setmetatable o,sel...

Lua 多重繼承

從 處開始function sertchfield parents k for i,v in pairs parents do local result v k 遍歷parents 裡的每個元素,查詢乙個鍵為k的成員 例如 fly onfoot 這裡找到了 fly onfoot 就返回 找不到 就 ...

lua中實現繼承

什麼是元表 元表像是乙個 操作指南 裡面包含了一系列操作的解決方案,例如 index方法就是定義了這個表在索引失敗的情況下該怎麼辦。index元方法 很多人對此都有誤解,這個誤解是 如果a的元表是b,那麼如果訪問了乙個a中不存在的成員,就會訪問查詢b中有沒有這個成員。而這個理解是完全錯誤的,實際上,...