Я пытаюсь понять, как ООП выполняется в 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();
К вашему сведению, я работаю с Corona SDK, хотя я предполагаю, что это ничего не меняет (за исключением того, что, как я полагаю, откуда взялась print ()). В любом случае, меня убивает то, что inName равно nil, как сообщает print (inName) ... поэтому myName, очевидно, имеет значение nil, поэтому вызовы sayHello () завершаются неудачно (хотя они работают нормально, если я жестко кодирую значение для myName, из-за чего я думаю, что основная структура, которую я пытаюсь использовать - это звук, но я должен упустить что-то простое). Насколько я могу судить, похоже, что при вызове newPerson () значение inName не устанавливается, но я не могу понять, почему; Я не понимаю, почему это не так, как любой другой вызов функции.
Любая помощь будет оценена. Спасибо!