Shapes vs. lose Tabellen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 40 von 73.
Du hast jetzt zwei Möglichkeiten, mit Datensatz-Tabellen zu arbeiten: die lockere Variante, die du in Lua schon immer verwendet hast, und deklarierte Strukturen. Es lohnt sich, kurz innezuhalten und zu betrachten, was dir die jeweilige Variante bietet.
Eine lockere Tabelle akzeptiert alles. Diese Flexibilität hat ihren Preis: Wenn du dich bei einem Feld verschreibst (user.nmae), erhältst du stillschweigend nil; wenn du ein Feld vergisst, tritt der Fehler erst viel später zur Laufzeit auf, in dem Code, der als Erstes auf diese Lücke zugreift:
local user = {name = "Ana", age = 20}
print(user.nmae) -- lockere Tabelle: gibt stillschweigend nil ausDeklarierst du eine Struktur, werden diese Fehler von der Laufzeit in die Bearbeitungszeit verlagert. Der Prüfer markiert den Tippfehler sofort, sobald du ihn schreibst, dein Editor kann Feldnamen automatisch vervollständigen, und die type-Deklaration dient gleichzeitig als Dokumentation darüber, was die Tabelle enthält:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ Typfehler: Schlüssel 'nmae' nicht in User gefundenWenn du von TypeScript kommst, beachte, dass Luau kein Schlüsselwort interface besitzt: type deckt jede Struktur ab. Es gibt außerdem keine „Deklarationszusammenführung“: Zwei Typen mit demselben Namen im selben Gültigkeitsbereich zu deklarieren, ist ein Fehler, daher hat jede Struktur genau eine Definition.
Luaus Strukturen sind strukturell: Jede Tabelle mit den richtigen Feldern und den richtigen Typen passt, unabhängig davon, wo oder wie sie erstellt wurde. Und lockere Tabellen haben weiterhin ihren Platz: Schnelle Skripte und wirklich dynamische Daten benötigen keine deklarierte Struktur. Für alles, was zwischen Funktionen übergeben wird, fängt eine Struktur Fehler jedoch ab, solange sie noch günstig zu beheben sind.
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 Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps6Typisieren von Tabellen-Shapes
Inline-Shape-AnnotationenTyp-Aliase für ShapesOptionale EigenschaftenShapes vs. lose TabellenShapes erweiternMethoden zu Shapes hinzufügenSelf und Methoden mit DoppelpunktZusammenfassung: Definieren von Tabellen-ShapesÜbe selbstständig: Online-Lua-Compiler