gpt4 book ai didi

Lua 尝试调用一个 nil 值的方法

转载 作者:行者123 更新时间:2023-12-05 04:12:22 24 4
gpt4 key购买 nike

我不知道我在这里做错了什么。

我有这个简单的代码:

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

__indexi 为小写。

更正后,您的代码应该可以正常工作。

关于Lua 尝试调用一个 nil 值的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40701370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com