首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua Get/Set Metatable

Lua Get/Set Metatable
EN

Stack Overflow用户
提问于 2021-12-05 19:25:14
回答 1查看 83关注 0票数 1
代码语言:javascript
复制
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()打印返回零。但是,如果我要执行ents.GetLocalPlayer():GetIndex(),它将返回1。

这样做的想法是,如果我不执行诸如GetIndex()之类的操作,则默认返回值为localplayer。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 00:37:25

表没有默认的元可用,这就是为什么您的getmetatable调用返回零。为了执行任何操作,setmetatable的第二个参数必须是至少有一个元方法的表。(__index是最常见的元方法。)

解决方案是将getmetatable(tbl.localplayer)更改为{__index = tbl.localplayer}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70237789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档