首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua __metatable旁路?

Lua __metatable旁路?
EN

Stack Overflow用户
提问于 2015-03-29 20:57:19
回答 2查看 1.3K关注 0票数 4

我想知道是否有任何方法可以逃脱__metatable元方法。我知道没有,但我正在尝试这样做,但显然__metatable阻止了这种情况的发生:

代码语言:javascript
复制
    -- pretend that there is a __metatable field given to a table
    setmetatable(_G, {__index = {None="No indexes"}})
    -- error: (the string given to the __metatable metamethod)

我在这里尝试做的是简单地跳过__metatable字段,并简单地允许我自己在已经有一个元表的_G上设置一个元表。我知道这是不可能的,但我想问一下,是否还有机会绕过?

EN

回答 2

Stack Overflow用户

发布于 2015-03-29 21:06:30

在Lua中实现这一点的唯一方法是使用debug.setmetatable

__metatable的全部意义在于保护。调试库绕过了这个保护(和其他保护),当然应该小心使用。

票数 5
EN

Stack Overflow用户

发布于 2020-11-18 02:42:02

我只会重写这些metables。

您可以使用synapse x overridemetables()来实现这一点。

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

https://stackoverflow.com/questions/29329377

复制
相关文章

相似问题

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