if-, elseif- und else-Anweisungen
Schreiben Sie mit der Lua-Syntax für if/elseif/else bedingte Verzweigungslogik
if-, elseif- und else-Anweisungen ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Grundlegende if-Anweisung
Die if-Anweisung wertet eine Bedingung aus und führt ihren Block aus, wenn die Bedingung als wahr ausgewertet wird. In Lua werden nur false und nil als falsch ausgewertet; alles andere – einschließlich 0 und "" – gilt als wahr. Beenden Sie den Block mit end.
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
Verketten Sie mehrere Bedingungen mit elseif und geben Sie mit else einen Ausweichzweig an. Lua wertet die Bedingungen von oben nach unten aus und führt nur den ersten passenden Zweig aus. Anders als bei switch/case in anderen Sprachen ist elseif in Lua ein einzelnes Schlüsselwort (nicht else if).
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endLogische Operatoren in Bedingungen
Lua verwendet and, or und not als logische Operatoren. Sie verwenden eine Kurzschlussauswertung: and gibt den ersten als falsch ausgewerteten Wert oder den letzten Wert zurück; or gibt den ersten als wahr ausgewerteten Wert oder den letzten Wert zurück. Dadurch sind idiomatische Muster für Standardwerte möglich.
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- GuestTernär-Idiom mit and/or
Lua besitzt keinen ternären Operator, aber das Muster and/or kann ihn annähernd nachbilden: condition and trueVal or falseVal. Dies funktioniert, solange trueVal weder false noch nil ist. Für eine sicherere ternäre Logik verwenden Sie eine Inline-if-Funktion.
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noVerschachtelte if-Anweisungen
Sie können if-Anweisungen innerhalb anderer Zweige verschachteln. Jeder verschachtelte Block benötigt sein eigenes end. Eine tiefe Verschachtelung deutet oft darauf hin, dass sich die Logik durch vorzeitige Rückgaben oder Guard Clauses vereinfachen lässt.
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endGuard Clauses
Eine Guard Clause ist eine vorzeitige Rückgabe, die ungültige oder besondere Fälle am Anfang einer Funktion behandelt und dadurch die Verschachtelung reduziert. Dieses Muster hält den Code für den „Normalfall“ ohne Einrückung und erleichtert das Lesen.
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeWerte vergleichen
Lua-Vergleichsoperatoren: == (gleich), ~= (ungleich), <, >, <=, >=. Hinweis: ~= ist in Lua „ungleich“ – nicht !=. Stringvergleiche verwenden die lexikografische Reihenfolge. Strings und Zahlen können Sie nicht direkt miteinander vergleichen.
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endStringgleichheit
Zwei Strings sind in Lua genau dann gleich, wenn sie denselben Byteinhalt und dieselbe Länge haben. Lua interniert Strings, sodass gleiche Strings oft auf denselben Speicherbereich verweisen und == dadurch einen schnellen Zeigervergleich durchführen kann. Vergleichen Sie Strings niemals mit is oder über Referenzgleichheit – == vergleicht immer den Wert.
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endVergleich von Tabellen und Funktionen
Tabellen und Funktionen werden per Referenz und nicht anhand ihres Inhalts verglichen. Zwei verschiedene Tabellenliterale mit identischem Inhalt sind nicht gleich, sofern sie nicht dasselbe Objekt sind. Verwenden Sie Metamethoden wie __eq, um eine benutzerdefinierte Gleichheit für Tabellen zu definieren.
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falseIdiome
Häufige Lua-Idiome mit Bedingungen: Verwenden Sie assert(), um Vorbedingungen zu überprüfen, den and/or-Trick für kurze Standardwerte und vermeiden Sie doppelte Verneinungen (not not x), um einen beliebigen Wert in einen booleschen Wert umzuwandeln.
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, WorldKurztest
Welche Werte werden in Lua als falsch ausgewertet?
Rückblick: Bedingungen
Zusammenfassung:
if ... elseif ... else ... end– die vollständige Form für Verzweigungen- Nur
nilundfalsewerden als falsch ausgewertet and/orverwenden eine Kurzschlussauswertung und geben Operandenwerte zurück~=bedeutet in Lua „ungleich“ (nicht !=)- Tabellen und Funktionen werden per Referenz, Strings per Wert verglichen
- Verwenden Sie Guard Clauses, um Verschachtelungen zu reduzieren
Häufig gestellte Fragen
Ist die Lektion „if-, elseif- und else-Anweisungen“ kostenlos?
Ja — der vollständige Text von „if-, elseif- und else-Anweisungen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „if-, elseif- und else-Anweisungen“?
Schreiben Sie mit der Lua-Syntax für if/elseif/else bedingte Verzweigungslogik Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „if-, elseif- und else-Anweisungen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- if-, elseif- und else-Anweisungen
- while- und repeat-until-Schleifen
- Numerische for-Schleife
- Generische for-Schleife und break