Kurzschlussauswertung
Teil des Abschnitts Grundlagen der Lua-Journey von Coddy. Lektion 23 von 90.
Wenn Lua die Operatoren and und or auswertet, verwendet es eine Regel namens kurzschlussartige Auswertung. Das bedeutet, dass Lua die Auswertung beendet, sobald das Endergebnis feststeht, und dabei möglicherweise Teile des Ausdrucks vollständig überspringt.
Beim and-Operator weiß Lua sofort, dass der gesamte Ausdruck false ergibt, wenn die erste Bedingung false ist, ohne die zweite Bedingung zu prüfen:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- Lua prüft nur playerAlive (false) und wertet hasWeapon nie ausÄhnlich weiß Lua beim Operator or, wenn die erste Bedingung true ist, dass das Ergebnis true sein wird, und überspringt die zweite Bedingung:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- Lua prüft nur hasKey (true) und wertet hasPassword nie ausDie Kurzschlussauswertung spart nicht nur Arbeit: Sie entscheidet, welcher Code ausgeführt wird. Hier ist die zweite Prüfung nur deshalb sicher, weil Lua sie überspringt, wenn lives nil ist:
lives = nil -- noch kein Wert
canPlay = lives ~= nil and lives > 0
print(canPlay) -- falseOhne Kurzschlussauswertung würde lives > 0 das Programm mit einem Fehler beenden, weil nil nicht mit einer Zahl verglichen werden kann. Das wirst du oft verwenden: Prüfe, ob ein Wert vorhanden ist, bevor du ihn verwendest.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren 2: Vergleichs- und logische Operatoren
GleichheitsoperatorenVergleichsoperatorenDer 'and'-OperatorDer 'or'-OperatorDer 'not'-OperatorKurzschlussauswertungTruthy- und Falsy-WerteRückblick – Einfache Logik7Grundlegende bedingte Logik
Die if-then-AnweisungDie if-then-else-AnweisungDie elseif-AnweisungWiederholung – Schatztruhe2Variablen und Datentypen
Was ist eine Variable?ZahlenZeichenkettenBoolesche WerteDer Wert „nil“Die Funktion type()NamenskonventionenRückblick – Charakterprofil5Grundlegende Ausgabe
Literale ausgebenVariablen ausgebenMehrere Werte ausgebenStrings & Variablen kombinierenDie tostring()-FunktionEingabeTypumwandlungRückblick – StatusberichtRückblick – Bis 1208Grundlagen der String-Manipulation
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Rückblick – Benutzernamen formatieren3Operatoren 1: Arithmetik & Verkettung
Arithmetische OperatorenModulo-OperatorPotenzierungsoperatorVerkettung von ZeichenkettenRangfolge der OperatorenWiederholung – Einfache Berechnungen6Projekt: Charakterwerte anzeigen
WillkommensnachrichtCharakterwerte deklarieren9Grundlagen von Funktionen
Eine Funktion deklarierenEine Funktion aufrufenFunktionen mit ParameternFunktionen mit mehreren ParameternDie Anweisung „return“Zusammenfassung – Flächenrechner12Grundlagen der Schleifen
Die while-SchleifeDie repeat-until-SchleifeDie numerische for-Schleifefor-Schleife mit SchrittweiteDie Anweisung „break“Rückblick – Countdown15Abschließende Herausforderungen
Wiederholung – SpielzugWiederholung – Einfache DatenbankWiederholung – Summe gerader ZahlenÜbe selbstständig: Online-Lua-Compiler