Variablen ändern
Der Wert einer Variablen kann sich ändern, während das Programm läuft. Emma verkauft Eier, und sie hat mehr Münzen:
local muenzen = 120
print("Münzen: " .. muenzen)
muenzen = muenzen + 15
print("Münzen: " .. muenzen)Das gibt Folgendes aus:
Münzen: 120
Münzen: 135In der Mathematik würde muenzen = muenzen + 15 keinen Sinn ergeben. In der Programmierung bedeutet = aber „speichere“: Zuerst berechnet Lua die rechte Seite mit dem aktuellen Wert (120 + 15), und dann speichert es das Ergebnis, 135, in muenzen. Der alte Wert ist weg. Das Programm läuft von oben nach unten, deshalb hat das erste print noch 120 ausgegeben.
Beachte, dass die dritte Zeile kein local hat. local schreibst du nur einmal, wenn du die Variable erzeugst. Um sie zu ändern, schreibst du nur ihren Namen, = und den neuen Wert. local muenzen = muenzen + 15 würde eine zweite Variable mit demselben Namen erzeugen. In einem kurzen Programm wie diesem würdest du den Unterschied nicht bemerken, aber in den Lektionen über Bedingungen und Schleifen ginge die Änderung verloren.
Du kannst den neuen Wert auch aus anderen Variablen berechnen. Und eine Variable speichert eine Zahl, nicht die Rechnung, die sie ergeben hat:
local karotten = 10
local kartoffeln = 5
local ernte = karotten + kartoffeln
karotten = 20
print(ernte)Das gibt Folgendes aus:
15Als Lua zur Zeile mit ernte kam, hat es 10 + 5 berechnet und 15 gespeichert. Eine spätere Änderung von karotten ändert ernte nicht.
Viele Sprachen haben Abkürzungen wie muenzen += 15 (15 addieren) oder muenzen++ (1 addieren). Standard-Lua hat keine davon. (Roblox’ Luau hat +=, aber das ist ein anderes Lua; mehr dazu am Ende des Kurses.) In Lua schreibst du immer alles aus, muenzen = muenzen + 15:
local muenzen = 120
muenzen += 15Lua meldet:
main.lua:2: syntax error near '+'Wie du aus der ersten Lektion weißt, bedeutet ein syntax error, dass das Programm nicht nach Luas Regeln geschrieben ist. Near '+' sagt dir, wo Lua sich verirrt hat: Es hat muenzen verstanden, aber danach kein + erwartet. Wie bei jedem Syntaxfehler läuft nichts, nicht einmal die Zeilen darüber.
Denselben Fehler bekommst du, wenn du in einer Zeile nur muenzen + 15 schreibst. Lua erlaubt keine Rechnung, deren Ergebnis nirgends gespeichert wird, und sagt dir so wenigstens, dass du das muenzen = vergessen hast.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus. Die Zeilen 7 und 8 sind so geschrieben, wie es manche andere Sprachen erlauben, und Lua meldet einen Fehler. Korrigiere beide Zeilen auf Lua-Art: Zeile 7 addiert
4 * 5zumuenzen, und Zeile 8 zieht 4 vonkarottenab. Das Programm gibt dann Folgendes aus:Münzen: 50, Karotten: 10 Münzen: 70, Karotten: 6 - 2
Mit dem Geld kauft Emma 3 Päckchen Kürbissamen für je 5 Münzen. Ziehe am Ende des Programms ihren Preis von
muenzenab (lass das Programm3 * 5berechnen) und gib dieselbe Zeile noch einmal aus:Münzen: 50, Karotten: 10 Münzen: 70, Karotten: 6 Münzen: 55, Karotten: 6 - 3
Bevor sie nach Hause geht, zieht Emma noch 8 Karotten aus dem Feld. Addiere sie zu
karottenund gib die Zeile noch einmal aus:Münzen: 50, Karotten: 10 Münzen: 70, Karotten: 6 Münzen: 55, Karotten: 6 Münzen: 55, Karotten: 14