为什么love2d不使用我的自定义对元方法?

时间:2019-08-09 16:15:26

标签: lua love2d metatable meta-method

我在文件main.lua中包含以下代码:

local table = {data={a=1,b=2,c=3}}
setmetatable(table, table)

function table:__pairs()
    return pairs(self.data)
end

function table:__tostring()
    return "a table"
end

print(table)

for e in pairs(table) do
    print(e)
end

运行lua main.lua时得到输出

a table
a
b
c

运行love ~/path/to/project时得到输出

a table
__tostring
data
__pairs

为什么爱会正确使用其他元方法,而不是成对使用?

我有LOVE 11.3(神秘之谜)和Lua 5.3.5

1 个答案:

答案 0 :(得分:1)

Love2D使用LuaJIT作为其默认解释器,该解释器已修复为Lua 5.1。而且,尽管您可以为标准Lua 5.1解释器重建Love2D,但使其使用标准Lua解释器的现代版本将需要大量的代码破解,因为5.2+不能向后兼容。

Lua 5.1没有pairs元方法。

相关问题