尝试调用 nil 值(字段“maxn”)错误

Ard*_*kçe 3 lua

mytable = setmetatable({1,2,3}, {
    __add = function(mytable, newtable)

     for i = 1, table.maxn(newtable) do
            table.insert(mytable, table.maxn(mytable)+1, newtable[i])
    end
    return mytable
end
})

secondtable = {4,5,6}

mytable = mytable + secondtable

for k,v in ipairs(mytable) do
    print(k,v)
end
Run Code Online (Sandbox Code Playgroud)

当我在终端中运行它时出现此错误:

lua: metatables4.lua:6: attempt to call a nil value (field 'maxn')
stack traceback:
    metatables4.lua:6: in metamethod '__add'
    metatables4.lua:15: in main chunk
    [C]: in ?
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在教程点编译器上运行它时,它会运行。

1   1
2   2
3   3
4   4
5   5
6   6
Run Code Online (Sandbox Code Playgroud)

这应该是我的输出。我无法确定这里的问题到底是什么,因为它在教程点编码地面 lua 编译器上运行。

我应该改变什么才能让它在我的终端上工作?

Pau*_*nko 5

来自Lua 5.2 参考手册 - 8.2 \xe2\x80\x93 库中的更改

\n\n
\n

函数 table.maxn 已弃用。如果你真的需要的话,用Lua写它。

\n
\n\n

您正在运行比tutorialspoint更新版本的Lua。

\n\n

您可以在脚本顶部添加以下代码,使其在 Lua 5.1+ 版本中运行:

\n\n
table.maxn = table.maxn or function(t) return #t end\n
Run Code Online (Sandbox Code Playgroud)\n