Lua Get/Set 元表
Lua Get/Set Metatable
local ents = {
GetLocalPlayer = function()
local tbl = {
localplayer = {"Ava", "1", {213,234,234}},
GetIndex = function(self)
return self.localplayer[2]
end,
}
setmetatable(tbl, getmetatable(tbl.localplayer))
return tbl
end
}
local function main()
print(ents.GetLocalPlayer()[2])
end
main()
打印 returns 零。但是,如果我要执行 ents.GetLocalPlayer():GetIndex()
,它会 returns 1.
如果我不做 GetIndex()
之类的事情,我的想法是让默认的 return 值为 localplayer
A table 没有默认元table,这就是为什么您的 getmetatable
调用 returns nil。为了执行任何操作,setmetatable
的第二个参数必须是具有至少一个元方法的 table。 (__index
是最常见的元方法。)
解决办法是把getmetatable(tbl.localplayer)
改成{__index = tbl.localplayer}
。
local ents = {
GetLocalPlayer = function()
local tbl = {
localplayer = {"Ava", "1", {213,234,234}},
GetIndex = function(self)
return self.localplayer[2]
end,
}
setmetatable(tbl, getmetatable(tbl.localplayer))
return tbl
end
}
local function main()
print(ents.GetLocalPlayer()[2])
end
main()
打印 returns 零。但是,如果我要执行 ents.GetLocalPlayer():GetIndex()
,它会 returns 1.
如果我不做 GetIndex()
A table 没有默认元table,这就是为什么您的 getmetatable
调用 returns nil。为了执行任何操作,setmetatable
的第二个参数必须是具有至少一个元方法的 table。 (__index
是最常见的元方法。)
解决办法是把getmetatable(tbl.localplayer)
改成{__index = tbl.localplayer}
。