學了元表,裡面的乙個很重要的鍵值 __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...