Menu
Coddy logo textTech

Das Problem, das Generics lösen

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

Stellen Sie sich vor, Sie benötigen eine Funktion, die einfach jeden Wert zurückgibt, den Sie ihr übergeben — eine Identity-Funktion. Mit den Typen, die Sie bisher kennen, haben Sie zwei Optionen, und beide schmerzen.

Option eins: Schreiben Sie eine separate Kopie pro Typ. Die Funktionskörper sind identisch; nur die Annotationen unterscheiden sich:

local function echoNumber(value: number): number
    return value
end

local function echoString(value: string): string
    return value
end

Jeder neue Typ bedeutet eine weitere Kopie, und ein Bug, der in einer behoben wird, muss in allen behoben werden. Das ist genau die Duplizierung, die man durch das Schreiben von Funktionen vermeiden möchte.

Option zwei: Fassen Sie sie in einer einzigen Funktion zusammen, die mit any typisiert ist:

local function echo(value: any): any
    return value
end

Jetzt verarbeitet eine Funktion alles — aber Sie haben mit der Typsicherheit bezahlt. Wenn Sie echo("hello") aufrufen, weiß der checker nicht mehr, dass das Ergebnis ein string ist. Er weiß nur any, sodass die Autovervollständigung nicht mehr funktioniert und Typfehler durchschlüpfen: Die Verbindung zwischen dem, was hineinging, und dem, was herauskommt, geht verloren.

Was Sie wirklich wollen, ist eine Funktion, die für jeden Typ funktioniert und sich merkt, welchen Typ jeder Aufruf verwendet hat. Genau das bieten Ihnen Generics — und sie sind das Thema dieses Kapitels.

Probier es selbst

Diese Lektion enthält keine Programmieraufgabe.

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