Zitat von
Scarecrow
@ Pac: Nachdem du das Buch gelesen hast wirst du: C verstehen und programmieren können, süchtig nach mehr Büchern sein.
Nun, ich kann C/C++ und so und aVon, ich finde Bücher sind das Beste, aber Lua kann ich noch nicht ganz. Das unverständliche an Lua sind die verwirrenden Parameter:
Mal sind sie str, mal int, kann man sich nicht drauf einigen? Und warum funktionieren normale Befehle nicht? Wo finde ich eine ausführliche Liste in Deutsch mit allen Events und Binds?
Mit Büchern gehts ja, aber ich weiß nicht, ob sich das lohnt jetzt ein Buch zu kaufen, dass auf Lua zugeht, weil ich mir eher ein Basic-Buch holen würde...
Aber egal, einen deutschen Lua-Pro kenn ich: aVon!
C++ und alle anderen OOPs haben den Vorteil von der exakten Deklarierung einer Methode bzw. Funktion als private, public und deren Rückgabewerte int,double,string etc.
Bei Lua ist es allerdings so einfach wie möglich gehalten. Tabellen sind Objekte und Arrays gleichzeitig und habe noch weitere Eigenschaften.
Dann ist zu erwähnen das eine Methode nur als "function" ohne ihre Eigenschaft von public oder private bzw. deren Rückgabewert deklariert wird.
Das besondere an den Datentypen ist auch die sog. Coercion die dynamisch zwischen "numbers" (Lua fasst alle numerischen datentype zu numbers zusammen, sodass es keine Unterscheidung zwischen Integer bzw. Double/Floar gibt. Man kan diese generall aber als float/double ansehen) und strings hin und her convertieren kann.
Und anstatt eines Klammer gerüstes wie z.B. in C++,Java,PHP und viele mehr benutzt es z.B. if "sonstwas" then "machdies" else "ansonstern das" end.
Also der kleine aber feine Unterschied in zwei Codeblöcken zusammen gefasst:
Code:
//Java Beispiel
class foo extends bar{
public foo(){
//Konstruktor Anweisungen
}
private int bar(int foo){
if(foo == 4){
return 5;
}
else{
return int() math.random(1,foo);
}
}
}
Code:
--Lua Beispiel
foo = {} --Erstellt eine Tabelle. Vergleich zu der Klasse in Java
-- Anders als richtige auf OOP ausgelegte Sprachen kennt Lua keinen Konstruktor
function foo.bar(foo) -- foo.bar bedeutet, dass diese Funktion nun eine Methode des Objektes (besser Tabelle) foo ist.
if foo == 4 then
return 4;
else
return math.random(1,foo);
end
end
Das sind eigendlich die kleinen aber feinen Unterschiede. Syntax ist anders und sehr einfach gehalten. Wenn man bereits eine Sprache kann, so fällt es relativ leicht Lua zu lernen. Mann muss nur wegen des Sytanx aufpassen.
Mein persönlicher Tipp ist es, bereits vorhandene Scripte (je kleiner, desto besser) auseinander zu nehmen und zu verstehen, was gerade dieser Ausdruck bewirkt. Dann sollte man erste Modifikationen starten.
Und beim GMWiki sollte man nicht mangels fehlender oder schlechter Lua Kenntnisse scheitern.