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

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

challenge icon

Aufgabe

Einfach

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

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

Erstelle anschließend zwei weitere typisierte anonyme Funktionen:

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

Rufe die folgenden Funktionen auf und gib jede in einer eigenen Zeile aus:

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