Was als wahr zählt
Eine Bedingung muss kein Vergleich sein. Nach if kannst du jeden Wert schreiben, und Lua entscheidet, ob er als wahr zählt. Luas Regel ist kurz: false und nil zählen als falsch, und alles andere zählt als wahr, sogar die Zahl 0 und der leere Text "":
if 0 then
print("0 zählt als wahr")
end
if "" then
print("Ein leerer Text zählt als wahr")
end
if nil then
print("nil zählt als wahr")
endDas gibt Folgendes aus:
0 zählt als wahr
Ein leerer Text zählt als wahrMerke dir das gut, besonders wenn du schon eine andere Sprache kennst: In Python, JavaScript oder C zählt 0 als falsch. In Lua nicht, und das passiert leicht:
local samen = 0
if samen then
print("Emma pflanzt die Samen")
else
print("Emma hat keine Samen")
endDas gibt Folgendes aus:
Emma pflanzt die SamenEmma hat keine Samen, aber 0 zählt als wahr. Um zu fragen, ob es Samen gibt, vergleiche: if samen > 0 then.
Wofür ist if samen then dann gut? Es fragt „hat samen einen Wert?“, also „ist es nicht nil?“. Das ist nützlich, weil manche Funktionen nil liefern, wenn sie scheitern. Du kennst tonumber: Es liefert nil, wenn der Text keine Zahl ist:
local antwort = "ein Dutzend"
local eier = tonumber(antwort)
if eier then
print("Eier: " .. eier)
else
print("Das ist keine Zahl: " .. antwort)
endDas gibt Folgendes aus:
Das ist keine Zahl: ein DutzendMit antwort = "12" wäre eier gleich 12, und das Programm würde Eier: 12 ausgeben. not folgt derselben Regel und ergibt immer einen Wahrheitswert: not nil ist true, und not 0 ist false. if not eier then bedeutet also „wenn eier nil ist“ (oder false).
Noch eine Falle: if samen == true then ist nicht dasselbe wie if samen then. == vergleicht genau, und eine Zahl ist nie gleich dem Wahrheitswert true, also ist 5 == true falsch. Lass das == true einfach weg.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus: Es gibt
Emma pflanzt 0 Samenaus. Korrigiere die Bedingung so, dass Emma nur pflanzt, wenn sie mehr als 0 Samen hat. Das Programm gibt dann Folgendes aus:Emma kauft neues Saatgut - 2
Opa Josef hat aufgeschrieben, wie viele Eier er möchte, aber als Text,
notiz. Wandle ihn am Ende des Programms mittonumberum und speichere das Ergebnis in einer lokalen Variableneier. Schreibe dann eineif-Anweisung, deren Bedingung nureierist. Wenn es einen Wert hat, gibOpa Josef möchte 14 Eieraus (mit der Zahl auseier); andernfalls gibEmma kann den Zettel nicht lesen:gefolgt von der Notiz aus. Das Programm gibt Folgendes aus:Emma kauft neues Saatgut Opa Josef möchte 14 Eier - 3
Ändere
notizin"vierzehn".tonumberkann ein Wort nicht in eine Zahl umwandeln, also isteiergleichnil, und das Programm gibt Folgendes aus:Emma kauft neues Saatgut Emma kann den Zettel nicht lesen: vierzehn