首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块脚本中的Metatable不能超出Roblox

模块脚本中的Metatable不能超出Roblox
EN

Stack Overflow用户
提问于 2022-03-26 07:27:23
回答 1查看 192关注 0票数 0

所以我做了两个模块脚本

下面是代码:

代码语言:javascript
复制
local base = {}
base.__index = base

base.Number = 5

function base:New()
local t = setmetatable({}, self)

 t.__index = t 
return t
end

 return base

第二:

代码语言:javascript
复制
  local base = script.Parent.Base


 local child = require(base):New()

  return child

这是一个普通的脚本:

代码语言:javascript
复制
  local child = require(script.Parent.Child1)

   print(child.Number)

当我尝试执行它之后,我得到了这个消息。

堆栈开始脚本'ServerScriptService.Script',第1行堆栈结束

它应该执行"5“,但它不起作用,我不知道为什么

EN

回答 1

Stack Overflow用户

发布于 2022-03-26 19:24:22

在基类中,将__index元方法设置为base对象,然后在构造函数中称为setmetatable({}, base),这两行表示当有人在空表上请求属性时,应该在base对象上找到它。但是,它们通过再次设置__index元方法来覆盖该行为。这将移除新对象与其基类之间的关系。

因此,要解决这个问题,只需删除构造函数中的该行。

代码语言:javascript
复制
function base:New()
    local t = setmetatable({}, base)
    return t
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71626114

复制
相关文章

相似问题

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