Verschachtelte Bedingungen
Ein Block kann beliebigen Code enthalten, auch eine weitere if-Anweisung. Ein if im Block eines anderen if heißt verschachtelte Bedingung. Sie ist nützlich, wenn eine Frage erst nach einer anderen Sinn ergibt. Bevor Emma pflanzt, prüft sie zuerst, ob sie Samen hat, und erst dann das Wetter:
local hatSamen = true
local wetter = "sonnig"
if hatSamen then
if wetter == "regnerisch" then
print("Emma pflanzt, und der Regen wässert die Samen")
else
print("Emma pflanzt und wässert die Samen")
end
else
print("Emma kauft zuerst Samen")
endDas gibt Folgendes aus:
Emma pflanzt und wässert die SamenDas innere if läuft nur, wenn hatSamen wahr ist. Seine Blöcke sind um 4 weitere Leerzeichen eingerückt, insgesamt 8, und jedes else und end ist so weit eingerückt wie das if, zu dem es gehört. Lua selbst schaut aber nicht auf die Einrückung: Jedes end schließt das nächste noch offene if. Das erste end schließt das innere if, das zweite das äußere if. Wenn du hier das innere end vergisst, meldet Lua main.lua:8: 'end' expected (to close 'if' at line 4) near 'else': Vor dem else in Zeile 8 hätte das if aus Zeile 4 geschlossen werden müssen.
Verschachtelte Bedingungen lassen sich oft stattdessen mit and und elseif schreiben. Dieser Code tut dasselbe:
local hatSamen = true
local wetter = "sonnig"
if hatSamen and wetter == "regnerisch" then
print("Emma pflanzt, und der Regen wässert die Samen")
elseif hatSamen then
print("Emma pflanzt und wässert die Samen")
else
print("Emma kauft zuerst Samen")
endDas gibt Folgendes aus:
Emma pflanzt und wässert die SamenDas Programm kommt zu elseif hatSamen nur, wenn die erste Bedingung falsch ist. Mit Samen heißt das, dass es nicht regnet. Keine der beiden Varianten ist falsch: Nimm die, die leichter zu lesen ist. Wenn aber keines der beiden if ein else hat, ist ein einzelnes if mit and fast immer klarer: if hatSamen and wetter == "regnerisch" then statt zwei if-Anweisungen und zwei end.
So schreibst du es:
Anweisungen
- 1
Auf dem Markt verkauft Emma eine Schachtel Eier, wenn sie mindestens 12 Eier hat, und sonst nur Milch von der Kuh Bella. Füge im
if-Block unter seinemprintein verschachteltesifhinzu: Wenneiermindestens12ist, gibSie verkauft eine Schachtel Eieraus; andernfalls gibSie verkauft nur Milchaus. Das Programm gibt Folgendes aus:Tag: Samstag, Eier: 8 Emma geht zum Markt Sie verkauft nur Milch - 2
Ändere
eierin20und führe das Programm aus. Jetzt sind beide Bedingungen wahr:Tag: Samstag, Eier: 20 Emma geht zum Markt Sie verkauft eine Schachtel Eier