Menu
CoddyTech

Eine generische Identitätsfunktion

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 62 von 80.

Hier ist die Identitätsfunktion richtig umgesetzt, als generische Funktion:

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

Das <T> nach dem Funktionsnamen deklariert einen Typparameter: einen Platzhalter, der für „einen beliebigen Typ, der bei jedem Aufruf festgelegt wird“ steht. In der Signatur verwendest du T genau wie einen echten Typ: Der Parameter ist vom Typ T, und die Funktion gibt einen Wert vom Typ T zurück.

Dieselbe Eingabe und Ausgabe mit T zu versehen, ist der ganze Trick. Dadurch werden sie miteinander verknüpft. Rufe identity("hello") auf, und der Prüfer legt für diesen Aufruf T = string fest, sodass das Ergebnis vom Typ string ist. Rufe identity(42) auf, und T = number, sodass das Ergebnis vom Typ number ist. Ein Funktionsrumpf, 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 dienen die spitzen Klammern nur dem Prüfer: Zur Laufzeit ist dies die einfache Lua-Funktion function identity(value) return value end.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion, die einen beliebigen Wert mit seinem Typ unverändert zurückgibt.

  1. Schreibe local function identity<T>(value: T): T, die value zurückgibt.
  2. Deklariere local luckyNumber: number = identity(7) und local greeting: string = identity("Hello, Luau!").
  3. Gib zuerst luckyNumber und dann greeting aus.

Drücke auf Run Code: Die Ausgabe zeigt 7 und Hello, Luau!.

Probier es selbst

-- 1) identity<T>(value: T): T
-- 2) luckyNumber und greeting aus Aufrufen von identity
-- 3) beide ausgeben

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler