Typisierung von anonymen Funktionen
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 23 von 73.
In Lua sind Funktionen Werte — Sie haben sie in Variablen gespeichert und herumgereicht: local f = function(x) return x * 2 end. Diese anonymen Funktionen (Funktionsausdrücke) akzeptieren Typannotationen genau wie benannte Funktionen:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endParameter erhalten name: type innerhalb der Klammern, und der Rückgabetyp folgt nach der schließenden Klammer — der einzige Unterschied zu einer benannten Funktion besteht darin, dass das Schlüsselwort function keinen Namen hat und der gesamte Ausdruck einer Variablen zugewiesen wird.
Wenn Sie JavaScript oder TypeScript kennen, beachten Sie, dass Luau keine Pfeilfunktionen (Arrow Functions) hat — es gibt keine =>-Syntax. Jeder Funktionsausdruck wird mit function ... end geschrieben, egal ob lang oder kurz.
Einmal zugewiesen, rufen Sie ihn wie jede andere Funktion über die Variable auf: double(21) gibt 42 zurück, und die Typprüfung überprüft jeden Aufruf anhand der von Ihnen geschriebenen Annotationen.
Aufgabe
EinfachSchreibe diese benannte Funktion in eine anonyme Funktion um, die in einer lokalen Variable gespeichert ist, und behalte dabei alle Typannotationen bei:
function subtract(a: number, b: number): number
return a - b
endAlso: Erstelle local subtract = function(...) ... end mit denselben Parameter- und Rückgabetypen.
Erstelle dann zwei weitere typisierte anonyme Funktionen:
createMessage— nimmttext: stringentgegen, gibt den String"Message: [text]"zurück (Rückgabetypstring)isPositive— nimmtnum: numberentgegen, gibttruezurück, wenn die Zahl größer als 0 ist, andernfallsfalse(Rückgabetypboolean)
Rufe sie auf und gib sie aus, jeweils in einer eigenen Zeile:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Probier es selbst
-- Schreibe hier den Code
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- dann gib die vier Ergebnisse aus
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
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und Maps