gpt4 book ai didi

传递给表中函数的 Lua 参数为零

转载 作者:行者123 更新时间:2023-12-04 13:09:45 26 4
gpt4 key购买 nike

我试图了解如何在 Lua 中完成 OOP,我认为我有一个简单的方法来做到这一点,但它不起作用,我只是没有看到原因。这是我正在尝试的:

Person = { };
function Person:newPerson(inName)
print(inName);
p = { };
p.myName = inName;
function p:sayHello()
print ("Hello, my name is " .. self.myName);
end
return p;
end

Frank = Person.newPerson("Frank");
Frank:sayHello();

仅供引用,我正在使用 Corona SDK,尽管我假设这没有什么区别(除了我相信 print() 来自哪里)。在任何情况下,让我丧命的部分是 print(inName) 报告的 inName 为 nil...因此,myName 显然设置为 nil,因此调用 sayHello() 失败(尽管如果我对myName,这让我认为我正在尝试的基本结构是合理的,但我必须遗漏一些简单的东西)。据我所知,在调用 newPerson() 时似乎没有设置 inName 的值,但我终生无法弄清楚原因;我不明白为什么它不像任何其他函数调用。

任何帮助,将不胜感激。谢谢!

最佳答案

记住这一点:

function Person:newPerson(inName)

相当于:
function Person.newPerson(self, inName)

因此,当您这样做时:
Person.newPerson("Frank");

您将一个参数传递给需要两个参数的函数。你可能不想要 newPerson使用 : 创建.

关于传递给表中函数的 Lua 参数为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8599904/

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