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 im Spiel sind. Sie schreiben bereits typisierte Arrays als {number} oder {string} — innerhalb einer generischen Funktion kann der Elementtyp einfach T sein, und {T} bedeutet "ein Array aus was auch immer T am Ende ist".
Hier ist das klassische Beispiel — das Abrufen des ersten Elements eines beliebigen Arrays:
local function first<T>(items: {T}): T?
return items[1]
endÜbergeben Sie ein {string} und der Typprüfer leitet T = string ab, sodass das Ergebnis ein String ist. Übergeben Sie ein {number} und es ist eine Zahl. Eine einzige Funktion ersetzt eine ganze Familie von typspezifischen Kopien.
Schauen Sie sich den Rückgabetyp genau an: Es ist T?, nicht T. Ein Array kann leer sein, und dann ist items[1] eben nil — der optionale Typ, den Sie zuvor kennengelernt haben, drückt das ehrlich aus: "ein T oder nil". Der Typprüfer wird den Aufrufer darauf hinweisen, den Fall nil zu behandeln, bevor er das Ergebnis verwendet – was genau das Abfangen von Fehlern ist, das man von einer typisierten Sprache erwartet.
Aufgabe
EinfachErstelle eine generische Funktion namens first, die:
- einen Typparameter
Tdeklariert - einen Parameter namens
itemsvom Typ{T}akzeptiert - das erste Element mit dem Rückgabetyp
T?zurückgibt (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 für jedes Array in dieser Reihenfolge jeweils in einer eigenen Zeile aus.
Probier es selbst
-- Schreibe Code hier
-- 1) definiere first<T>(items: {T}): T? das items[1] zurückgibt
-- 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