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 Identitätsfunktion richtig gemacht — als eine 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 „irgendeinen Typ, entschieden bei jedem Aufruf“ steht. Innerhalb der Signatur verwendest du T genau wie einen echten Typ: Der Parameter ist ein T und die Funktion gibt ein T zurück.

Die Verwendung desselben T für Eingabe und Ausgabe ist der ganze Trick — es verbindet sie miteinander. Rufst du identity("hello") auf, entscheidet der Checker T = string für diesen Aufruf, sodass das Ergebnis ein string ist. Rufst du identity(42) auf, ist T = number, sodass das Ergebnis ein number ist. Ein Körper, 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 normale Lua-Funktion function identity(value) return value end.

challenge icon

Aufgabe

Einfach

Erstelle eine generische Funktion namens identity, die:

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

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 jeweils in einer eigenen Zeile aus:

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

Probier es selbst

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

Übe selbstständig: Online-Lua-Compiler