簡體   English   中英

嘗試調用nil值(字段“ maxn”)錯誤

[英]Getting attempt to call a nil value (field 'maxn') error

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編譯器的tutorialspoint編碼上。

要在終端上正常工作,我應該更改什么?

Lua 5.2參考手冊-8.2 –庫中的更改

不建議使用函數table.maxn。 如果確實需要,請用Lua編寫。

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

您可以在腳本頂部添加以下代碼,以使其在Lua 5.1+版本中起作用:

table.maxn = table.maxn or function(t) return #t end

使用#newtable代替table.maxn(newtable)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM