Menu
CoddyTech

Verwendung einer generischen Funktion

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

Du gibst identity nie an, was T ist: Der Prüfer findet es selbst heraus. Das ist Typinferenz: Bei jedem Aufruf betrachtet Luau das Argument und ermittelt T:

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

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 Typannotation: Für den Prüfer ist word ein string, mit vollständiger Autovervollständigung und Fehlerprüfung.

Ein wichtiger Unterschied zu TypeScript: TS lässt dich den Typ am Aufruf erzwingen, indem du identity<number>(5) schreibst. Luau kennt keine Typargumente an Aufrufstellen. 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 du den Typ ausdrücklich angeben möchtest, annotiere stattdessen die Variable:

local count: number = identity(12)

Du kannst die Inferenz mit einem vertrauten Werkzeug beobachten: typeof gibt den Namen des Laufzeittyps eines Werts zurück. Daher gibt print(typeof(identity(12))) number aus: Der Wert hat die generische Funktion völlig unverändert durchlaufen.

challenge icon

Aufgabe

Einfach

Lass den Typprüfer T bei jedem Aufruf ermitteln.

  1. Speichere unter der Funktion identity("Oslo") in local city und identity(42) in local floors, ohne Typannotationen.
  2. Gib zuerst typeof(city), dann typeof(floors) aus.

Drücke auf Run Code: Die Ausgabe zeigt string und number.

Probier es selbst

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

-- 1) city und floors aus Aufrufen von identity, ohne Typannotationen
-- 2) typeof für beide ausgeben

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler