scripting:tutorials:level1:tables
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| scripting:tutorials:level1:tables [2023/05/29 07:00] – fritz_98 | scripting:tutorials:level1:tables [2024/05/13 13:26] (aktuell) – fritz_98 | ||
|---|---|---|---|
| Zeile 41: | Zeile 41: | ||
| </ | </ | ||
| + | Tables, die wie Listen funktionieren, | ||
| ---- | ---- | ||
| Zeile 114: | Zeile 115: | ||
| \\ | \\ | ||
| - | ==== Ein Table verändern ==== | + | ==== Eine Liste verändern ==== |
| Konsequenterweise können wir über '' | Konsequenterweise können wir über '' | ||
| Zeile 136: | Zeile 137: | ||
| <code lua> | <code lua> | ||
| function GetFibonacci(_Length) | function GetFibonacci(_Length) | ||
| - | -- Falls man nur an höchstens | + | -- Falls man nur an höchstens |
| -- wir nicht groß zu rechnen | -- wir nicht groß zu rechnen | ||
| - | if _Length == 1 then | + | if _Length == 0 then |
| + | return {} | ||
| + | elseif | ||
| return {0} | return {0} | ||
| - | elseif _Length == 2 then | ||
| - | return {0, 1} | ||
| end | end | ||
| | | ||
| Zeile 165: | Zeile 166: | ||
| </ | </ | ||
| - | **Achtung**: | + | **Achtung**: |
| <code lua> | <code lua> | ||
| MyTable = {6, 18} | MyTable = {6, 18} | ||
| Zeile 172: | Zeile 173: | ||
| MyTable[4] = 24 | MyTable[4] = 24 | ||
| - | print(table.getn(MyTable)) -- #MyTable | + | -- Als Table-Länge wird 2 angezeigt werden, weil danach ein " |
| + | Message(table.getn(MyTable)) | ||
| + | |||
| + | -- Wenn wir dieses " | ||
| + | MyTable[3] = 1 | ||
| + | |||
| + | -- wird die Table-Länge 4 angezeigt werden | ||
| + | Message(table.getn(MyTable)) | ||
| + | </ | ||
| ---- | ---- | ||
| ===== Tables als Wörterbücher ===== | ===== Tables als Wörterbücher ===== | ||
| + | |||
| + | Die andere Art von Tables sind solche, die **Paare** von Variablen einander zuordnet. Wie in einem Wörterbuch kann man in so einem Table für einen gesuchten Wert (Fremdwort, **Schlüsselwert**/ | ||
| + | |||
| + | Dazwischen stehen dann die Werte-Paare. Der Schlüsselwert/ | ||
| + | <code lua> | ||
| + | Dictionary = { | ||
| + | [" | ||
| + | [" | ||
| + | [" | ||
| + | [" | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Will man nun wissen, welches deutsche Wort einem englischen entspricht, kann man sich den Wert wie bei den Listen oben mit eckigen Klammern holen: | ||
| + | |||
| + | <code lua> | ||
| + | -- Was bedeutet Keyboard? | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | Natürlich kann man nicht nur Strings einander zuordnen: | ||
| + | <code lua> | ||
| + | NumberNames = { | ||
| + | [1] = " | ||
| + | [2] = " | ||
| + | [3] = " | ||
| + | [4] = " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Der Name einer Zahl lässt sich dann mit '' | ||
| + | |||
| + | <code lua> | ||
| + | NumberNames = {" | ||
| + | </ | ||
| + | |||
| + | Es gibt für Tables eine weitere abkürzende Schreibweise, | ||
| + | <code lua> | ||
| + | -- Dieses kleine Wörterbuch ist genau das gleiche wie oben in einer anderen Schreibweise | ||
| + | Dictionary = { | ||
| + | Computer = " | ||
| + | Mouse = " | ||
| + | Keyboard = " | ||
| + | Screen = " | ||
| + | } | ||
| + | </ | ||
| + | **Wichtig**: | ||
| + | |||
| + | Die gleiche Vereinfachung existiert auch, wenn man den Wert anhand des Keys wieder referenzieren möchte: | ||
| + | <code lua> | ||
| + | -- Was bedeutet Keyboard? | ||
| + | print(" | ||
| + | </ | ||
| + | Der String-Key wird also mit einem Punkt vom Table-Name getrennt. | ||
| + | |||
| + | **Hinweis**: | ||
| + | |||
| + | **Wichtig**: | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Ein Table verändern ==== | ||
| + | |||
| + | Wir können unserem Wörterbuch wie gewohnt neue Werte hinzufügen. Für Strings bleiben beide Schreibweisen: | ||
| + | <code lua> | ||
| + | -- Wir definieren einige String-Paare im Dictionary | ||
| + | Dictionary = { | ||
| + | Computer = " | ||
| + | Mouse = " | ||
| + | Keyboard = " | ||
| + | Screen = " | ||
| + | } | ||
| + | |||
| + | -- Jetzt fügen wir einige weitere hinzu: | ||
| + | Dictionary[" | ||
| + | Dictionary[" | ||
| + | |||
| + | -- Dabei können wir die Schreibweise frei wählen | ||
| + | Dictionary.Joystick = " | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | |||
| + | ==== Tables als Werte ==== | ||
| + | |||
| + | Wenn man in einem Table weitere " | ||
| + | |||
| + | Aus Rollenspielen kennst du vielleicht Charaktereditoren, | ||
| + | <code lua> | ||
| + | Character = { | ||
| + | Hair = { | ||
| + | Style = "Short Messy", | ||
| + | Color = " | ||
| + | Effect = " | ||
| + | }, -- Key-Value-Paare werden weiterhin durch Kommas getrennt. Die werden oft vergessen | ||
| + | Eyes = { | ||
| + | Type = 9, | ||
| + | Color = " | ||
| + | Size = 5, | ||
| + | GapSize = 11 | ||
| + | }, | ||
| + | Nose = { | ||
| + | Type = 3, | ||
| + | Size = 7, | ||
| + | Effect = "Dirt Patch" | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | In diesem Beispiel haben wir oft " | ||
| + | '' | ||
| + | ist eine andere Variable als \\ | ||
| + | '' | ||
| + | |||
| + | Man kann dem geschachtelten Table wie gewohnt neue Werte hinzufügen: | ||
| + | <code lua> | ||
| + | Character.Nose.Height = 8 | ||
| + | |||
| + | Character.Mouth = { | ||
| + | Type = 10, | ||
| + | Width = 15, | ||
| + | Color = "Deep Red", | ||
| + | Height = 4 | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | An dieser Stelle sind die Lua-Inhalte für diese Ebene abgeschlossen. Das nächste Kapitel gibt **wichtige** Konventionen an, //wie// man Lua lesbar aufschreibt. | ||
| + | |||
| + | [[ scripting: | ||
| + | [[ scripting: | ||
| + | [[ scripting: | ||
scripting/tutorials/level1/tables.1685343622.txt.gz · Zuletzt geändert: 2023/05/29 07:00 von fritz_98
