__index
如果一个table的元表具有_index
元方法,使用key来访问table中不存在的字段时,如果
-
__index
是函数,那么使用table和key作为参数来调用该函数local mt = {} local f = function(table, key) return something end mt.__index = f setmetatable(t, mt) -- t[key] 等同于 f(t, key)
-
__index
是table,那么使用key来访问这个table
__newindex
-
__newindex
是函数,那么使用table、key、value作为参数来调用该函数 -
__newindex
是table,那么使用key、value来设置这个table的key字段local mt = {} local innertable = {} end mt.__newindex = f setmetatable(t, mt) -- t[key] = value 等同于 innertable[key] = value