Menu
Coddy logo textTech

Verwendung einer generischen Funktion

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

Sie teilen identity nie mit, was T ist — die Typprüfung findet es selbst heraus. Das ist Typinferenz: Bei jedem Aufruf sieht sich Luau das Argument an und ermittelt T:

local word = identity("Luau")   -- T als string inferiert
local count = identity(12)      -- T als number inferiert
local flag = identity(false)    -- T als boolean inferiert

Jeder Aufruf ist unabhängig — T kann in einer Zeile ein string und in der nächsten eine number sein. Das abgeleitete Ergebnis ist genauso sicher wie eine handgeschriebene Annotation: word ist für die Typprüfung ein string, mit vollständiger Autovervollständigung und Fehlerprüfung.

Ein wichtiger Unterschied zu TypeScript: TS ermöglicht es Ihnen, den Typ an der Aufrufstelle mit identity<number>(5) zu erzwingen. Luau besitzt keine Typargumente an der Aufrufstelle — diese Zeile ist keine spezielle Syntax, daher liest Luau die spitzen Klammern als Kleiner-als-/Größer-als-Vergleiche und der Code schlägt fehl. Wenn Sie den Typ explizit angeben möchten, annotieren Sie stattdessen die Variable:

local count: number = identity(12)

Sie können die Inferenz mit einem bekannten Werkzeug bei der Arbeit beobachten: typeof gibt den Laufzeit-Typnamen eines Werts zurück, sodass print(typeof(identity(12))) number ausgibt — der Wert hat die generische Funktion völlig unverändert durchlaufen.

challenge icon

Aufgabe

Einfach

Die generische identity-Funktion aus der vorherigen Lektion befindet sich bereits in Ihrem Editor. Setzen Sie deren Typableitung ein.

Erstellen Sie drei Variablen und lassen Sie den Checker T inferieren (keine Typannotationen erforderlich):

  • word — rufen Sie identity mit "Luau" auf
  • count — rufen Sie identity mit 12 auf
  • flag — rufen Sie identity mit false auf

Geben Sie Folgendes aus, jeweils in einer eigenen Zeile:

  1. word
  2. das Ergebnis von typeof(word)
  3. count
  4. das Ergebnis von typeof(count)
  5. flag
  6. das Ergebnis von typeof(flag)

Probier es selbst

-- Die generische Identitätsfunktion aus der vorherigen Lektion
local function identity<T>(value: T): T
    return value
end

-- Schreibe hier Code
-- 1) erstelle word, count und flag mit identity-Aufrufen (lass T inferieren)
-- 2) gib jeden Wert gefolgt von seinem typeof 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