Lua繼承的實現( index元方法)

2021-07-16 10:26:28 字數 1249 閱讀 4205

通過lua強大的metatable來實現繼承,主要**如下:

__index元方法:用於檢視表中元素或方法是否存在,如果不存在返回nil,如果存在,則返回__index表中的結果

baseclass = {}

baseclass.__index = baseclass

function baseclass:myshow( key )

if key == "key2" then

return "baseclass key2 is nil"

else

return baseclass[key]

endend

require"baseclass"

childclass = setmetatable({},baseclass)

childclass.temptable =

function childclass:showallkey( key )

if self == nil then

print("self is nil")

endif key == "key1" then

return childclass.temptable[key]

elseif key == "key2" then

return childclass:myshow(key)

else

return childclass.temptable[key]

endendprint("******************************===")

print(childclass.showallkey(self,"key1"))

print("******************************===")

print(childclass.showallkey(self,"key2"))

print("******************************===")

print(childclass.showallkey(self,"key3"))

print("******************************===")

注意:**是在sublime text3上編譯

執行結果

lua 元表理解 index

lua 表的本質是乙個hasmap的東西,是乙個key value的形式,除了nil,其他的任何值都能做key,在乙個lua表中去查詢乙個不存在的key的時候,就會觸發lua自己的一套查詢機制,同樣的繼承也是根據這個機制實現的。1.什麼是元表 我認為是乙個備用操作指南,這個指南裡面有很多方法,ind...

lua元表中的 index鍵值

學了元表,裡面的乙個很重要的鍵值 index 當我們通過鍵去訪問乙個表時,如果不存在這個鍵,lua還會嘗試搜尋表的元表的 index鍵值,沒有則返回nil 1.如果元表中的 index鍵對應的是表,直接搜尋鍵名,搜尋不到返回nil 2.如果元表中的 index鍵所對應的是函式,則呼叫函式並傳遞 表和...

Lua中強大的元方法 index詳解

這篇文章主要介紹了lua中強大的元方法 index詳解,本文著重講解了使用 index元方法實現table的繼承,需要的朋友可以參考下 今天要來介紹比較好玩的內容 index元方法 1.我是備胎,記得回頭看看 咳咳,相信每一位女生都擁有或者不知不覺中擁有了一些備胎,啊,當然,又或許是成為過別人的備胎...