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