Menu
Coddy logo textTech

Optionale Eigenschaften

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 39 von 73.

Nicht jedes Feld ist immer vorhanden. In Lua wird ein fehlendes Tabellenfeld einfach als nil gelesen — was flexibel ist, aber auch der Grund dafür, wie sich Fehler wie attempt to concatenate a nil value einschleichen.

Luau ermöglicht es einer Form, dies explizit auszudrücken: Fügen Sie ? nach dem Typ eines Feldes hinzu, um es als optional zu markieren:

type User = {
    name: string,   -- erforderlich
    email: string?, -- optional: string oder nil
}

local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ in Ordnung, email ist optional

Sie sind dem bereits bei Variablen begegnet: string? ist die Kurzform für string | nil. Dasselbe Konzept gilt nun für einzelne Felder einer Form.

Da ein optionales Feld nil sein kann, müssen Sie es prüfen, bevor Sie es verwenden. Das klassische Lua-Muster funktioniert, und im Strict-Modus verengt der Typechecker den Typ innerhalb des Zweigs:

if bob.email then
    print(`email: {bob.email}`) -- hier ist email ein String
else
    print("no email on file")
end

Optional bedeutet "kann fehlen" — es bedeutet nicht "ein beliebiger Typ". Wenn email existiert, muss es immer noch ein String sein.

challenge icon

Aufgabe

Einfach

Erstelle einen Typ-Alias namens User mit:

  • name vom Typ string (erforderlich)
  • email vom Typ string? (optional)

Erstelle zwei Benutzer:

  • alice — Name "Alice", E-Mail "alice@luau.dev"
  • bob — Name "Bob", keine E-Mail

Erstelle eine Funktion printContact, die einen User entgegennimmt. Wenn der Benutzer eine E-Mail hat, gibt sie [name] - [email] aus; andernfalls gibt sie [name] - no email aus.

Danach:

  1. rufe printContact(alice) auf
  2. rufe printContact(bob) auf
  3. gib das Ergebnis des Vergleichs bob.email == nil aus

Probier es selbst

-- Schreibe hier Code
-- 1) definiere den Typ User mit einem optionalen email-Feld
-- 2) erstelle alice (mit email) und bob (ohne)
-- 3) schreibe printContact mit einer nil-Prüfung
-- 4) rufe es für beide User auf, dann gib bob.email == nil aus
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Lua-Compiler