0Pricing
Lua Academy · Lektion

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
end

if/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")
end

Logische 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)   -- Guest

Ternä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"))  -- no

Verschachtelte 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")
end

Guard 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 negative

Werte 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")
end

Stringgleichheit

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")
end

Vergleich 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)   -- false

Idiome

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, World

Kurztest

Welche Werte werden in Lua als falsch ausgewertet?

Rückblick: Bedingungen

Zusammenfassung:

  • if ... elseif ... else ... end – die vollständige Form für Verzweigungen
  • Nur nil und false werden als falsch ausgewertet
  • and/or verwenden 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

  1. if-, elseif- und else-Anweisungen
  2. while- und repeat-until-Schleifen
  3. Numerische for-Schleife
  4. Generische for-Schleife und break
← Zurück zu Lua Academy