尝试在全局变量 't1' 上执行算术运算(一个表格值)

尝试添加表格,使用元表,我遇到了这个错误,我真的很复杂,没有办法解决(我正在学习 Lua)。

mt = { ___add = function (a,b)
                local s = {}
                for k,v in ipairs( a ) do s[#s + 1] = v end
                for k,v in ipairs( b ) do s[#s + 1] = v end
               end
    }

t1 = {1,2,3}
t2 = {4,5}
setmetatable( t1, mt )
print(table.concat(t1+t2, ", "))

当尝试使用解释器“编译”时,它给我这个结果

main.lua:15: 尝试在全局变量 't1' 上执行算术运算(一个表格值)
main.lua:15: 在主块中
点赞
用户107090
用户107090

你的代码中有两个问题:

  • 元方法的名称是 __add,有 两个 下划线,而不是 _三个_。

  • 你需要在元方法中返回 s

解决这些问题后,代码将按预期工作。

2017-12-08 14:06:25