繁体   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