我已经使用 SWIG 将一组类绑定(bind)到 lua。我知道 C++ 本身不支持猴子修补,而且我并不是要修改我的 C++ 对象,而只是修改它们的 lua 表示形式。如果我想开始猴子修补 SWIG 导出的 lua 表和对象,那么问题就来了,这样我就可以修改 lua 端提供的 API。
例如以下 lua 代码:
game.GetEnemies1 = game.GetEnemies2
没有按预期工作。该行之后的行为仍然与原始 GetEnemies1 而非 GetEnemies2 一致。
我该如何解决这个问题?
最佳答案
我已经通过添加和替换现有方法成功地对 lua 用户数据进行了猴子修补。它涉及修改它们的元表。
Here's a sample为了向现有用户数据对象添加几个方法,我必须做些什么。
如您所见,我不得不修改它的元表,而不是修改对象本身。
这个解决方案只有在你的用户数据对象被设置为它们的元表“指向它们自己”时才有效:mt.__index = mt
。
问候!
关于c++ - Lua + SWIG 猴子补丁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754235/