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
在终端中运行时出现此错误:
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 ?
但是当我尝试在 tutorialspoint 编译器上运行它时,它会运行。
1 1
2 2
3 3
4 4
5 5
6 6
这应该是我的输出。我无法确定这里到底是什么问题,因为它运行在教程点编码基础 lua 编译器上。
我应该改变什么才能让它在我的终端上工作?
函数 table.maxn 已弃用。如果你真的需要,用 Lua 写它。
您正在运行比tutorialspoint 更新的Lua 版本。
您可以在脚本顶部添加以下代码,使其在 Lua 5.1+ 版本中工作:
table.maxn = table.maxn or function(t) return #t end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句