Lua - 扩展userdata

我有一个带有元表的userdata值,我想像这样添加另一个元表:

local obj = Game:create_object() --Obj现在包含userdaa
print(obj:get_x()) --使用obj的元表中的方法

--我想做像这样的事情:
local mt = {name = "test"}
mt.__index = mt
setmetatable(obj, mt)
print(obj.name)

--并且仍然有最初的方法
print(obj:get_x())

有没有可能以任何方式实现这个?如果不行,有什么替代方案?

点赞
用户1847592
用户1847592
local obj = Game:create_object() --Obj 现在包含用户数据
print(obj:get_x()) --使用 obj 的元表中的方法

local new_fields = {name = "test"}
local mt = {}
for k, v in pairs(getmetatable(obj)) do
   mt[k] = v
end
new_fields.__index = mt.__index
mt.__index = setmetatable(new_fields, new_fields)
setmetatable(obj, mt)

--仍然可以使用最初的方法
print(obj.name)
print(obj:get_x())
2017-03-23 13:23:24