lua元表中的 index鍵值

2021-09-19 08:06:33 字數 863 閱讀 6190

學了元表,裡面的乙個很重要的鍵值 __index , 當我們通過鍵去訪問乙個表時,如果不存在這個鍵,lua還會嘗試搜尋表的元表的__index鍵值,沒有則返回nil

1.如果元表中的__index鍵對應的是, 直接搜尋鍵名,搜尋不到返回nil

2.如果元表中的__index鍵所對應的是函式,則呼叫函式並傳遞 表和鍵 兩個引數, 返回函式返回值

t = 

print( t[1] )

print( t[5] ) --nil

t =

}print( t[1] )

print( t[5] ) --nil ,因為t沒有元表,不會從自己的__index鍵找

setmetatable(t, t) --將自己設定為自己的元表

print( t[1] )

print( t[5] ) --55 ,自己沒有的, 從元表__index 鍵值(此時是表) 中找

setmetatable(t, )

print( t[1] )

print( t[5] ) --nil ,自己沒有的, 從元表__index 鍵 中找, 而不是元表中的元素

--自己沒有的, 從元表__index 鍵值(此時是函式,則呼叫函式並傳遞 表 和 鍵 兩個引數)

setmetatable(t, )

print( t[1] )

print( t[5] ) --nil ,自己沒有的, 從元表__index 鍵 中找, 而不是元表中的元素

lua 元表理解 index

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

Lua中強大的元方法 index詳解

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

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

通過lua強大的metatable來實現繼承,主要 如下 index元方法 用於檢視表中元素或方法是否存在,如果不存在返回nil,如果存在,則返回 index表中的結果 baseclass baseclass.index baseclass function baseclass myshow key...