Menu
Coddy logo textTech

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) .. "!"
end

Parameter 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.

challenge icon

Aufgabe

Einfach

Schreibe 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
end

Also: Erstelle local subtract = function(...) ... end mit denselben Parameter- und Rückgabetypen.

Erstelle dann zwei weitere typisierte anonyme Funktionen:

  • createMessage — nimmt text: string entgegen, gibt den String "Message: [text]" zurück (Rückgabetyp string)
  • isPositive — nimmt num: number entgegen, gibt true zurück, wenn die Zahl größer als 0 ist, andernfalls false (Rückgabetyp boolean)

Rufe sie auf und gib sie aus, jeweils in einer eigenen Zeile:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. 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
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