2016-04-21 7 views
1

Ich bin ein Anfänger zum Programmieren im Allgemeinen und ich habe ein paar verschiedene Sprachen versucht. In Lua gibt es Tabellen, die wie Super Listen zu sein scheinen (Arrays, Wörterbücher, listet alle in einem), aber in Lua ist es möglich, dies zu tun:Was ist der Unterschied zwischen Lua Tabellen und Klassen?

player = { health = 100, attack = 50, mana = 54 } 
print(player.health) 

und es würde 100. Aber auch in anderen Programmierung zurückkehren Sprachen, müssten Sie eine Klasse erstellen, um dieselbe Ausgabe zu erhalten. Aber von meinem Verständnis hat Lua sowohl Klassen als auch Tische? Aber Tische scheinen sich sehr ähnlich zu verhalten, sind sie also gleich? Wenn nicht, was macht sie anders und was sind die Vor- und Nachteile?

+0

Nein. Von oben auf meinem Kopf C-Strukturen oder JavaScript-Tabellen und so ziemlich jede andere Sprache, die '.' für Hash/Table-Adressierung verwendet oder bietet syntatic Zucker würde genau das gleiche funktionieren. –

+1

Lua hat keine Klassen. Es gibt Möglichkeiten, sie mit Metatables zu emulieren, aber nichts eingebaut. –

+1

Ein Lua-Tabellenwert ist ein Wörterbuch, Punkt. Lua's Syntax erlaubt es Ihnen, eine Tabelle aus einer Feldliste unter Verwendung von impliziten Ganzzahlschlüsseln gemäß den dokumentierten Regeln zu konstruieren. –

Antwort

8

Aber von meinem Verständnis hat Lua Klassen sowie Tabellen?

Nein, tut es nicht.

Lua (Ignorieren von C API stuff) hat genau eine komplexe Datenstruktur: Tabellen.

Sie können erstellen eine Klasse mit einer Tabelle. Sie können alle Arten von Dingen mit einer Tabelle erstellen. Lua Tabellen sind sehr flexibel, gerade weil sie die Datenstruktur Lua nur haben.

In Lua ist jede komplexe Sache auf der Basis eine Tabelle. Oder, wenn es von einer C-API kommt, userdata.

Eine Klasse ist im Grunde ein Prototyp zum Erstellen von Objekten. Sie deklarieren, dass eine Klasse X-, Y- und Z-Mitglieder enthält, und erstellen dann ein Objekt dieses Klassentyps, in dem sich X-, Y- und Z-Mitglieder befinden.

Sie können Lua-Tabellen erstellen, die das Verhalten von Klassen nachahmen. Aber in Lua gibt es kein Sprachkonstrukt, das formal wie eine Klasse ist.

2

Lua hat keine Klassen, sondern nur Tabellen, mit Metatable. Lua verwenden Prototyp OOP implementieren

1

Ich denke, Sie sind verwirrt, weil object.attribute ist normalerweise der Weg in anderen Sprachen, um offensichtlich Attribute eines Objekts zuzugreifen.

Wie auch immer, da Lua keine Klassen hat, kann der Punkt verwendet werden, um auf Tabellenfelder zuzugreifen, und table.field funktioniert genauso wie Schreiben table["field"].

Verwandte Themen