Menu
Coddy logo textTech

Eine generische Identitätsfunktion

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

Hier ist die Identity-Funktion richtig umgesetzt — als generische Funktion (generic function):

local function identity<T>(value: T): T
    return value
end

Das <T> nach dem Funktionsnamen deklariert einen Typparameter — einen Platzhalter, der für "einen bestimmten Typ steht, der bei jedem Aufruf bestimmt wird". Innerhalb der Signatur verwendest du T genau wie einen echten Typ: Der Parameter ist ein T, und die Funktion gibt ein T zurück.

Dasselbe T für Eingabe und Ausgabe zu verwenden, ist der eigentliche Trick — es verbindet beide miteinander. Rufe identity("hello") auf und der Checker entscheidet T = string für diesen Aufruf, sodass das Ergebnis ein string ist. Rufe identity(42) auf und T = number, sodass das Ergebnis ein number ist. Ein Body, jeder Typ, nichts geht verloren.

T ist nur ein konventioneller Name (kurz für "Type") — <Item> oder <Value> funktionieren genauso gut. Und wie immer in Luau existieren die spitzen Klammern nur für den Checker: Zur Laufzeit ist dies die ganz normale Lua-Funktion function identity(value) return value end.

challenge icon

Aufgabe

Einfach

Erstelle eine generische Funktion namens identity, die:

  • einen Typparameter T deklariert
  • einen Parameter namens value vom Typ T akzeptiert
  • diesen Wert mit dem Rückgabetyp T zurückgibt

Erstelle dann diese typisierten Variablen unter Verwendung deiner Funktion:

  • luckyNumber vom Typ number — rufe identity mit 7 auf
  • greeting vom Typ string — rufe identity mit "Hello, Luau!" auf
  • isReady vom Typ boolean — rufe identity mit true auf

Gib Folgendes aus, jeweils in einer eigenen Zeile:

  1. luckyNumber
  2. greeting
  3. isReady
  4. das Ergebnis des Aufrufs von identity mit "generics" direkt innerhalb von print
  5. das Ergebnis des Aufrufs von identity mit 99 direkt innerhalb von print

Probier es selbst

-- Schreibe Code hier
-- 1) definiere identity<T>(value: T): T
-- 2) erstelle luckyNumber, greeting und isReady mit identity-Aufrufen
-- 3) gib sie aus, dann gib identity("generics") und identity(99) 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