Generische Arrays
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 60 von 73.
Generics werden wirklich nützlich, sobald Tabellen ins Spiel kommen. Du schreibst typisierte Arrays bereits als {number} oder {string}. Innerhalb einer generischen Funktion kann der Elementtyp einfach T sein, und {T} bedeutet „ein Array aus dem, als was sich T letztendlich herausstellt“.
Hier ist das klassische Beispiel: das erste Element eines beliebigen Arrays abrufen:
local function first<T>(items: {T}): T?
return items[1]
endÜbergib ein {string}, und der Prüfer leitet T = string her, sodass das Ergebnis ein String ist. Übergib ein {number}, und es ist eine Zahl. Eine Funktion ersetzt eine ganze Gruppe typspezifischer Kopien.
Sieh dir den Rückgabetyp genau an: Er ist T?, nicht T. Ein Array kann leer sein, und dann ist items[1] nil: Der optionale Typ, den du zuvor kennengelernt hast, sagt dies ehrlich aus: „ein T oder nil“. Der Prüfer wird Aufrufer dazu anhalten, den Fall nil zu behandeln, bevor sie das Ergebnis verwenden – genau das Aufspüren von Fehlern, das du von einer typisierten Sprache erwartest.
Aufgabe
EinfachErstelle eine generische Funktion namens first, die:
- einen Typparameter
Tdeklariert - einen Parameter namens
itemsvom Typ{T}akzeptiert - das erste element zurückgibt, mit dem Rückgabetyp
T?(es istnilfür ein leeres array)
Erstelle diese typisierten arrays:
fruitsvom Typ{string}mit"apple","banana","cherry"scoresvom Typ{number}mit10,20,30,40flagsvom Typ{boolean}mitfalse,trueemptyvom Typ{string}ohne elemente
Gib das Ergebnis des Aufrufs von first mit jedem array in dieser Reihenfolge aus, jedes in einer eigenen Zeile.
Probier es selbst
-- Schreibe den Code hier
-- 1) definiere first<T>(items: {T}): T? gibt items[1] zurück
-- 2) erstelle fruits: {string}, scores: {number}, flags: {boolean},
-- und ein leeres {string} Array
-- 3) gib first(...) von jedem Array aus, in dieser Reihenfolge
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-Shapes9Generics: Ein erster Einblick
Das Problem, das Generics lösenEine generische IdentitätsfunktionVerwendung einer generischen FunktionGenerische ArraysGenerische Typ-AliaseZusammenfassung: Generische FunktionenÜbe selbstständig: Online-Lua-Compiler