个人理解
在我们项目当中,把读取的配置表作为元表,这样方便调用也不会使配置表本身发生变化。
在调用表时,直接获取该表的元表即可
在类中使用
设置整个类为元表
function nodeLua:create()
local temp = {}
setmetatable(temp, {__index = nodeLua})
return temp
end
function nodeLua:setMode(mode)
self._mode = mode
end
此时nodeLua包含的局部变量及成员函数 均可在外部调用
local node = nodeLua:create()
node:setMode(5)
__index 元方法
这是 metatable 最常用的键。
当你通过键来访问 table 的时候,如果这个键没有值,那么Lua就会寻找该table的metatable(假定有metatable)中的__index 键。如果__index包含一个表格,Lua会在表格中查找相应的键。
如果__index包含一个函数的话,Lua就会调用那个函数,table和键会作为参数传递给函数。
__index 元方法查看表中元素是否存在,如果不存在,返回结果为 nil;如果存在则由 __index 返回结果。