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: Du hast sie in Variablen gespeichert und weitergereicht: 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 innerhalb der Klammern name: type, und der Rückgabetyp folgt auf die schließende 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 du JavaScript oder TypeScript kennst, beachte, dass Luau keine Pfeilfunktionen hat. Es gibt keine =>-Syntax. Jeder Funktionsausdruck wird mit function ... end geschrieben, egal ob lang oder kurz.
Nach der Zuweisung rufst du sie wie jede Funktion über die Variable auf: double(21) gibt 42 zurück, und der Prüfer überprüft jeden Aufruf anhand der von dir geschriebenen Annotationen.
Aufgabe
EinfachSchreibe diese benannte Funktion als anonyme Funktion um, die in einer lokalen Variable gespeichert wird, und behalte 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 anschließend zwei weitere typisierte anonyme Funktionen:
createMessage: akzeptierttext: stringund gibt den String"Message: [text]"zurück (Rückgabetypstring)isPositive: akzeptiertnum: numberund gibttruezurück, wenn die Zahl größer als 0 ist, andernfallsfalse(Rückgabetypboolean)
Rufe die folgenden Funktionen auf und gib jede in einer eigenen Zeile aus:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Probier es selbst
-- Schreibe hier 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Übe selbstständig: Online-Lua-Compiler