簡體   English   中英

Lua嘗試將方法調用為nil值

[英]Lua attempt to call method a nil value

我迷失了我在這里做錯的事情。

我有這個簡單的代碼:

Queue = {}
Queue.__Index = Queue

function Queue.Create()
    local obj = {}
    setmetatable(obj, Queue)
    return obj
end

function Queue:PushBack(item)
end

q = Queue.Create()
print(q)
q:PushBack(1)

執行此操作時,我會“嘗試調用方法'PushBack'(nil值)。但是,如果我像這樣更改PushBack函數並相應地調用它,則它會起作用:

function Queue.PushBack(q, item)
end

q = Queue.Create()
print(q)
Queue.PushBack(q, 1)

該代碼運行並正確執行。 我了解“:”是語法糖,所以在我看來

function Queue:PushBack(item)

將與

Queue.PushBack(q, item)

但它死在我身上。 它與我創建對象的方式有關嗎? 我對此很茫然,我似乎無法弄清楚到底是什么錯誤。

nil表示在第一種情況下未找到PushBack函數。

您的代碼無法正常工作的原因是,您無意間__Index因為它應該是:

Queue.__index = Queue

__index i為小寫。

更正后,您的代碼應該可以正常工作。

暫無
暫無

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

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