Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递给表中函数的Lua参数为零_Lua - Fatal编程技术网

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

传递给表中函数的Lua参数为零,lua,Lua,我正试图弄清楚在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

我正试图弄清楚在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()的来源)。在任何情况下,杀死我的部分是inName是零,正如print(inName)报道的那样。。。因此,myName显然被设置为nil,因此对sayHello()的调用失败(尽管如果我硬编码myName的值,它们工作得很好,这让我认为我尝试的基本结构是合理的,但我必须缺少一些简单的东西)。就我所知,在调用newPerson()时,inName的值似乎没有被设置,但我一辈子都不知道为什么;我不明白为什么它不像其他函数调用

任何帮助都将不胜感激。谢谢

试试看

Frank = Person:newPerson("Frank");
请记住:

function Person:newPerson(inName)
相当于:

function Person.newPerson(self, inName)
因此,当您这样做时:

Person.newPerson("Frank");

您正在将一个参数传递给一个需要两个参数的函数。你可能不想用
来创建
新人

我希望我能接受你和尼科尔的答案都是正确的,你们两人的答案都完全正确。。。我把它给你只是因为你先回答:)但是谢谢你尼科尔也解释了它。。。正如我所预料的,这是一件我完全忘记的愚蠢的事情,甚至不是我不知道的事情。再次感谢你,一切都正常运转,我现在希望如此:)@scholli:试着在stackoverflow论坛上解释你的答案。