项目中有个公会对象,数据大部分存在data中,之前都是 u.data.point这样访问,太麻烦了。
于是通过设置__index 使之可以直接访问属性,u.point。
但是还是不能直接改属性,u.point = 4,所以再设置了__newindex。
在设置了setmetatable之后,不能直接给u添加新属性,因为设置了__newindex,新的属性将直接加到u.data中的。
Union = {
data = nil,
dirty = nil,
}
--- 生成新的对象
function Union:new(o)
o = o or {}
setmetatable(o,self)
self.__index = self
return o
end
--- 初始化Union数据
function Union:init(data)
self:initTable()
self.data = data
local meta = {}
meta.__index = function (table, key)
if Union[key] ~= nil then
return Union[key]
else