[英]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.