Sto cercando di capire come viene eseguito OOP in Lua, e ho pensato di avere un modo semplice per farlo ma non funziona e io sono solo non vedendo la ragione. Ecco quello che sto cercando:Gli argomenti Lua passati alla funzione nella tabella sono 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();
FYI, sto lavorando con il Corona SDK, anche se io parto dal presupposto che non fa la differenza (se non che è dove print() viene dal credo). In ogni caso, la parte che mi sta uccidendo è che inName è nullo come riportato da print (inName) ... quindi, myName è ovviamente impostato su zero quindi chiamate a direHello() falliscono (anche se funzionano bene se ho hardcode un valore per myName, che mi porta a pensare che la struttura di base che sto cercando sia valida, ma mi manca qualcosa di semplice). Sembra, per quanto posso dire, che il valore di inName non venga impostato quando viene chiamato newPerson(), ma non riesco a capire perché; Non vedo perché non è come qualsiasi altra chiamata di funzione.
Qualsiasi aiuto sarebbe apprezzato. Grazie!
Vorrei poter accettare sia le vostre sia le risposte di Nicol come corrette, entrambi avete capito esattamente ... Vi sto dando solo perché avete risposto prima :) Ma grazie Nicol per averlo spiegato anche ... era, come mi aspettavo, qualcosa di stupido che ho semplicemente dimenticato, nemmeno una cosa che non sapevo. Grazie ancora, tutto funziona come dovrebbe e come voglio ora :) –
@ Schollii: Prova a spiegare le tue risposte nel forum StackOverflow. – karthik
@karthik: hai ragione, grazie per il promemoria! – Schollii