Zusammenfassung
In dieser Lektion hast du gelernt:
- Eine Tabelle kann ein Dictionary sein:
{Karotten = 12, Kartoffeln = 30}enthält Schlüssel-Wert-Paare. Lua hat dafür keinen anderen Typ; eine Liste ist eine Tabelle, deren Schlüssel 1, 2, 3 … sind. - Du liest einen Wert mit einem Punkt,
scheune.Karotten, oder in eckigen Klammern,scheune["Karotten"]. Ein Schlüssel mit einem Leerzeichen muss in Klammern und Anführungszeichen stehen:["Rote Bete"] = 9. - Eine Zuweisung ändert einen Wert oder fügt einen neuen Schlüssel hinzu (
scheune.Eier = 18); die Zuweisung vonnilentfernt den Schlüssel. Ein fehlender Schlüssel ergibtnil, keinen Fehler, undscheune.Zucchini or 0macht daraus einen Standardwert.#zählt nicht die Schlüssel eines Dictionarys. - Steht der Schlüssel in einer Variable, benutze eckige Klammern ohne Anführungszeichen:
preise[pflanze].preise.pflanzeist der Schlüssel"pflanze". for schluessel, wert in pairs(t)geht jeden Schlüssel durch, in keiner festgelegten Reihenfolge. Um der Reihe nach auszugeben, sammle die Schlüssel in einer Liste, sortiere sie mittable.sortund gehe sie mitipairsdurch.anzahlen[x] = (anzahlen[x] or 0) + 1zählt Dinge; die Klammern sind wichtig.- Ein Datensatz ist eine Tabelle, die eine einzelne Sache mit festen Feldern beschreibt:
{name = "Karotte", tage = 3}. Eine Liste von Datensätzen verarbeitest du mitipairs: Summen, Filter, einen Datensatz finden. - Tabellen können verschachtelt sein:
hof.scheune.eier. Das Lesen durch eine fehlende Tabelle endet mitattempt to index a nil value (field 'schuppen'). - Eine Variable enthält eine Referenz auf eine Tabelle: Weder
local b = anoch die Übergabe einer Tabelle an eine Funktion kopiert sie.{} == {}istfalse. Für eine eigene Tabelle kopiere sie mitpairs.
Nach dieser Lektion kommt noch ein kleines Projekt, ein Hofladen, in dem du Funktionen und Dictionaries einsetzt. Dann arbeitest du in der Lektion über Strings mit Texten: Du schneidest Teile heraus, suchst darin, richtest sie in Spalten aus und zerlegst sie in Wörter und Zahlen.
Jetzt etwas Übung. Diese Woche hat Emma ein Erntetagebuch geführt: was sie jeden Tag geerntet hat und wie viel.
So schreibst du es:
Anweisungen
- 1
Schreibe eine Funktion
summen(eintraege), die ein Dictionary zurückgibt: für jede Pflanze, wie viel Emma insgesamt davon geerntet hat. Gib dann die Summen aus, nach dem Namen der Pflanze sortiert:Karotten: 25 Kartoffeln: 35 Zucchini: 3 - 2
Schreibe eine Funktion
wert(mengen, preisliste), die das Dictionary der Summen und eine Preisliste bekommt und zurückgibt, wie viele Münzen die ganze Ernte wert ist. Gib aus:Wert: 465 Münzen - 3
Gib zum Schluss
Nach Menge:aus und darunter die Pflanzen noch einmal, von der größten Menge zur kleinsten. Sortiere die Liste der Pflanzen mit einer Vergleichsfunktion, die ihre Summen vergleicht:Nach Menge: Kartoffeln: 35 Karotten: 25 Zucchini: 3