__index元方法
阿新 • • 發佈:2017-08-25
func 元表 fun 方法 lua 一個表 urn 什麽 ==
如果定義了一個元表
table = {a = 1}
setmetatable(table, {__index = {b = 2}})
那麽如果在table中取沒有定義的鍵,那麽lua就會在__index元方法裏面去找,前提是__index是一個表,她還可以是一個函數
print(table.a,table.b)
------------
那麽當__index元方法是函數會怎麽樣呢?lua會調用這個函數,並傳入表和你寫的那個鍵
t = setmetatable({a=1},{__index = function(table,key)
--如果你查詢一個表中沒有的函數,lua就會調到這裏來
table.b = 2
print(table.b,key)
--[[或者是
if key == "c" then
return "b"
else
return nil
end
]]
end})
print(t.a,t.hehe)
這裏首先她會打印2和hehe,然後才是1和nil。
為什麽,因為t.hehe是查找,主表沒找到,找元表,元表也沒找到(沒有return出來),自然是nil
__index元方法