Listen erstellen
In der Lektion über Schleifen hast du gelernt, Code zu wiederholen. In dieser Lektion lernst du, viele Werte unter einem Namen aufzubewahren.
Emma baut auf dem Sonnenblumenhof mehrere Pflanzen an. Mit dem, was du bisher kennst, bräuchtest du für jede eine eigene Variable:
local pflanze1 = "Karotte"
local pflanze2 = "Kartoffel"
local pflanze3 = "Kürbis"Das ist viel Tipparbeit, und eine Schleife kann sie nicht durchgehen: pflanze1 und pflanze2 sind nur zwei Namen, die nichts miteinander zu tun haben. Lua hat ein besseres Werkzeug: die Tabelle. Eine Tabelle, die Werte der Reihe nach, einen nach dem anderen, enthält, heißt Liste. Du schreibst ihre Werte in geschweifte Klammern, durch Kommas getrennt:
local pflanzen = {"Karotte", "Kartoffel", "Kürbis"}Die Werte einer Liste sind ihre Elemente. Diese Liste hat drei Elemente in einer festen Reihenfolge: "Karotte" ist das erste, "Kürbis" das letzte. Tabellen sind in Lua die einzige Möglichkeit, Werte zu gruppieren. In dieser Lektion enthalten sie Listen. In späteren Lektionen enthalten dieselben Tabellen Dictionaries und sogar Objekte.
Jedes Element hat eine Position, den Index. In Lua beginnen die Indizes bei 1: Das erste Element hat den Index 1, das zweite den Index 2 und so weiter. Um ein Element zu lesen, schreibst du den Namen der Liste und den Index in eckigen Klammern:
local pflanzen = {"Karotte", "Kartoffel", "Kürbis"}
print(pflanzen[1])
print(pflanzen[3])Das gibt Folgendes aus:
Karotte
KürbisSo gehören die Elemente und ihre Indizes zusammen:
pflanzen: | "Karotte" | "Kartoffel" | "Kürbis" |
Index: 1 2 3Die meisten anderen Programmiersprachen (Python, JavaScript, C …) zählen die Indizes ab 0. Lua zählt ab 1, so wie Menschen Dinge zählen. Wenn du eines Tages eine andere Sprache lernst, achte auf diesen Unterschied.
Was passiert bei einem Index, zu dem es kein Element gibt, wie 0 oder 4? Viele Sprachen halten das Programm mit einem Fehler an. Lua nicht: Du bekommst einfach nil, den Wert für „nichts“:
local pflanzen = {"Karotte", "Kartoffel", "Kürbis"}
print(pflanzen[0], pflanzen[4])Das gibt Folgendes aus:
nil nilDas nil macht erst später Ärger, wenn du es benutzt. Wenn du es zum Beispiel mit einem Text verbindest, endet das Programm mit einem Fehler:
local pflanzen = {"Karotte", "Kartoffel", "Kürbis"}
print("Pflanze: " .. pflanzen[4])main.lua:2: attempt to concatenate a nil value (field 'integer index')Die Meldung sagt, dass du versucht hast, ein nil zu verbinden (englisch concatenate), und dass es aus einer Tabelle kam: field ist Luas Wort für einen Platz in einer Tabelle, und dieser hatte eine Ganzzahl als Index. Wenn du so einen Fehler siehst, prüfe den Index.
Elemente können auch Zahlen sein, und eine Liste kann auch leer sein: {}. Eine leere Liste zu füllen lernst du später in dieser Lektion. Ein Element, das du aus einer Liste liest, ist ein gewöhnlicher Wert, du kannst also damit rechnen oder es mit einem Text verbinden:
local eier = {4, 6, 5}
print(eier[1] + eier[2])
print("Eier heute: " .. eier[3])Das gibt Folgendes aus:
10
Eier heute: 5So schreibst du es:
Anweisungen
- 1
Das Programm soll Emmas erste Pflanze ausgeben, aber wenn du es ausführst, endet es mit einem Fehler:
main.lua:3: attempt to concatenate a nil value (field 'integer index'). Korrigiere den Index, sodass das ProgrammErste Pflanze: Karotteausgibt. - 2
Gib darunter auf dieselbe Weise die letzte Pflanze aus, die vierte:
Letzte Pflanze: Erdbeere. - 3
Erzeuge darunter eine lokale Variable
eiermit einer Liste der Eier, die Emmas Hühner in den letzten drei Tagen gelegt haben:4,6und5, in dieser Reihenfolge. - 4
Gib aus, wie viele Eier die Hühner in den drei Tagen zusammen gelegt haben. Addiere im Code die drei Elemente von
eier; rechne die Zahl nicht selbst aus:Eier insgesamt: 15.