Menu
Coddy logo textTech

Verwendung einer generischen Funktion

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

Du sagst identity nie, was T ist: Der Prüfer findet es selbst heraus. Das ist Typinferenz: Bei jedem Aufruf betrachtet Luau das Argument und löst T auf:

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

Jeder Aufruf ist unabhängig: T kann in einer Zeile ein String und in der nächsten eine Zahl sein. Das inferierte Ergebnis ist genauso sicher wie eine von Hand geschriebene Annotation: Für den Prüfer ist word ein string, mit vollständiger Autovervollständigung und Fehlerprüfung.

Ein wichtiger Unterschied zu TypeScript: TS erlaubt es dir, den Typ an der Aufrufstelle mit identity<number>(5) zu erzwingen. Luau hat keine Typargumente an der Aufrufstelle. Diese Zeile ist keine spezielle Syntax, daher liest Luau die spitzen Klammern als Vergleiche „kleiner als“/„größer als“, und der Code schlägt fehl. Wenn du den Typ explizit angeben möchtest, annotiere stattdessen die Variable:

local count: number = identity(12)

Du kannst die Inferenz mit einem vertrauten Werkzeug bei der Arbeit beobachten: typeof gibt den Laufzeit-Typnamen eines Werts zurück, daher gibt print(typeof(identity(12))) number aus: Der Wert hat die generische Funktion vollständig unverändert durchlaufen.

challenge icon

Aufgabe

Einfach

Die generische identity-Funktion aus der vorherigen lesson befindet sich bereits in deinem Editor. Setze ihre Inferenz ein.

Erstelle drei Variablen und lass den Checker T inferieren (keine Annotationen erforderlich):

  • word: Rufe identity mit "Luau" auf
  • count: Rufe identity mit 12 auf
  • flag: Rufe identity mit false auf

Gib 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 ableiten)
-- 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

Übe selbstständig: Online-Lua-Compiler