Elemente ändern
Ein Element einer Liste funktioniert wie eine Variable: Du kannst ihm mit = einen neuen Wert geben. Links schreibst du den Namen der Liste und den Index in eckigen Klammern, genau wie beim Lesen des Elements:
local beete = {"Karotte", "Kartoffel", "Kürbis"}
beete[2] = "Tomate"
print(beete[1], beete[2], beete[3])Das gibt Folgendes aus:
Karotte Tomate KürbisDas zweite Element ist jetzt "Tomate", und die alte "Kartoffel" ist weg. Die anderen Elemente bleiben, wie sie waren. Zahlen in einer Liste änderst du genauso. Lua hat kein +=, du schreibst also das Element auf beiden Seiten:
local eier = {4, 6, 5}
eier[3] = eier[3] + 2
print(eier[3])Das gibt Folgendes aus:
7Schreibe nicht == statt =. beete[2] == "Tomate" ist ein Vergleich und kein Befehl, und in einer eigenen Zeile endet er mit syntax error near '=='.
Ein Element ans Ende hängen. Der Platz direkt hinter dem letzten Element hat den Index #beete + 1. Wenn du dort einen Wert zuweist, wächst die Liste um ein Element:
local beete = {"Karotte", "Kartoffel"}
beete[#beete + 1] = "Weizen"
beete[#beete + 1] = "Mais"
print(#beete, beete[3], beete[4])Das gibt Folgendes aus:
4 Weizen MaisNach der ersten Zuweisung hat die Liste drei Elemente, also setzt die zweite "Mais" an den Index 4. So kannst du auch eine Liste füllen, die leer beginnt: local ernte = {} und dann so oft, wie du brauchst, ernte[#ernte + 1] = ….
Lass keine Löcher. Eine Liste sollte ihre Elemente an den Indizes 1, 2, 3 … ohne Lücken haben. Wenn du ein Element weiter weg als #beete + 1 zuweist oder ein Element in der Mitte auf nil setzt, bekommt die Liste ein Loch, und # ist nicht mehr zuverlässig:
local pflanzen = {"Karotte", "Kartoffel", "Kürbis", "Weizen"}
pflanzen[2] = nil
print(#pflanzen)
local mehr = {"Karotte", "Kartoffel", "Kürbis"}
mehr[5] = "Mais"
print(#mehr)Das gibt Folgendes aus:
4
3Die erste Liste hat nur noch drei Pflanzen, aber # sagt 4. Die zweite hat vier Pflanzen, aber # sagt 3: Es sieht den "Mais" gar nicht. Bei einem Loch kann # bis zum Loch zählen oder darüber hinaus, und Lua verspricht nicht, was von beidem. Füge Elemente also nur bei #liste + 1 hinzu und entferne sie so, wie es die nächste Übung zeigt.
So schreibst du es:
Anweisungen
- 1
Die Kartoffeln sind geerntet, und Emma hat an ihrer Stelle Tomaten gepflanzt. Ändere unter dem
printdas zweite Element vonbeeteauf"Tomate". - 2
Emma hat ein neues Beet für Weizen angelegt. Hänge
"Weizen"am Index#beete + 1ans Ende der Liste. - 3
Gib am Ende des Programms die Anzahl der Beete, das zweite Beet und das letzte aus, jedes in einer eigenen Zeile. Das letzte hole mit
#beete:Beete: 4 Zweites: Tomate Letztes: Weizen