我想了解Lua中面向对象编程的实现方式,本以为有一个简单的方法来实现,但它并没有成功,我无法找出原因。以下是我的尝试:
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();
FYI,我正在使用Corona SDK工作,虽然我认为这没有什么区别(除了print()函数是从那里来的)。无论如何,让我痛苦不已的是,根据print(inName)的报告,inName是nil... 因此,myName显然设置为nil,因此调用sayHello()函数失败(尽管如果我为myName硬编码一个值,则它们可以正常工作,这使我认为我尝试的基本结构是正确的,但我必须遗漏了一些简单的东西)。就我所知,当调用newPerson()时,inName的值似乎没有被设置,但我却想不出为什么;我不明白它为什么不像任何其他函数调用一样。
任何帮助都将不胜感激。 谢谢!