루아에서 OOP이 어떻게 수행되는지에 대한 핸들을 얻으려고합니다. 나는 그것을 할 수있는 간단한 방법이 있다고 생각했지만 작동하지 않습니다. 이유를 보지 못했습니다. 여기에 내가 노력하고있어입니다 : 참고로테이블에 함수에 전달 된 루아 인수는 nil입니다.
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();
, 나는 (내가 믿는에서 인쇄()가 오는 곳 그건 제외) 그 차이를하지 않는 가정입니다 비록 내가, 코로나 SDK와 함께 일하고 있어요. 어쨌든 날 죽이는 부분은 print (inName)에 의해보고 된 것과 같이 inName이 nil이라는 것입니다. 따라서 myHean은 sayHello() 호출이 실패 할 수 있도록 분명히 nil로 설정됩니다. myName은 제가 시도하는 기본 구조가 건전하다고 생각하게하지만, 간단한 것을 놓치고 있어야합니다.) newPerson()이 호출 될 때 inName의 값이 설정되지 않는 것처럼 보이지만, 필자는 그 이유를 알 수 없습니다. 왜 다른 함수 호출과 같은 것이 아닌지 나는 알 수 없다.
도움을 주시면 감사하겠습니다. 감사!
function Person:newPerson(inName)
이 동일합니다 :
나는 니콜과 니콜의 대답을 모두 받아 들일 수 있었으면 좋겠다. 네가 정확히 대답했기 때문에 ... 네가 먼저 대답했기 때문에 나에게주고있다. :) 니콜도 역시 설명해 주셔서 감사합니다. 내가 예상했듯이, 내가 방금 잊어 버린 바보 같은 뭔가가, 내가 모르는 어떤 것이 었습니다. 다시 감사드립니다, 모든 일을해야하고 어떻게 지금 원하는지 :) –
@ Schollii : Stackoverflow 포럼에서 귀하의 답변을 설명하려고합니다. – karthik
@karthik : 당신 말이 맞아요, 알림 주셔서 감사합니다! – Schollii