Lua __跖骨旁路



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

    -- 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上设置一个metatable,它已经有一个了。我知道这是不可能的,但我想问一下是否还有机会绕过?

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

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

我只会覆盖元组。

您可以使用synapse x overridemetables()来完成此操作。

最新更新