Próbuję uzyskać obsługę sposobu, w jaki OOP jest wykonywana w Lua, i myślałem, że mam prosty sposób to zrobić, ale to nie działa i po prostu jestem nie widząc powodu. Oto, co usiłuję:Argumenty Lua przekazane do funkcji w tabeli są zerowe
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, pracuję z Corona SDK, chociaż jestem przy założeniu, że nie ma różnicy (poza tym, że tam print() pochodzi od wierzę). W każdym razie, część, która mnie zabija to to, że inName jest zerowe, jak zostało to zgłoszone przez print (inName) ... w związku z tym myName jest oczywiście ustawione na zero, więc wywołania sayHello() nie powiodą się (mimo że działają poprawnie, gdybym zakodował wartość dla myName, co skłania mnie do myślenia, że podstawowa struktura, którą próbuję, jest dobra, ale muszę czegoś brakować). Wygląda na to, o ile mogę powiedzieć, że wartość inName nie jest ustawiana, gdy wywoływana jest funkcja newPerson(), ale nie mogę dla mnie zrozumieć dlaczego; Nie rozumiem, dlaczego nie jest to po prostu jak każde inne wywołanie funkcji.
Każda pomoc zostanie doceniona. Dzięki!
Chciałbym móc przyjąć zarówno twoje, jak i odpowiedzi Nicola, jako prawidłowe, oboje dokładnie to dostaliście ... Daję wam to tylko dlatego, że odpowiedzieliście najpierw :) Ale dziękuję Nicol za wyjaśnienie tego ... to było, jak się spodziewałem, coś głupiego, że po prostu zapomniałem, nawet czegoś, o czym nie wiedziałem. Jeszcze raz dziękuję, wszystko działa tak, jak powinno i jak chcę teraz :) –
@ Schollii: Spróbuj wyjaśnić swoje odpowiedzi na forum stackoverflow. – karthik
@karthik: masz rację, dziękuję za przypomnienie! – Schollii