Menu
Coddy logo textTech

Funktionen als First-Class Values

Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 12 von 54.

In Lua sind Funktionen mehr als nur Codeblöcke, die Aufgaben ausführen – sie sind Werte, die wie jeder andere Datentyp behandelt werden können. Das bedeutet, dass Sie mit Funktionen auf die gleiche Weise arbeiten können wie mit Zahlen, Strings oder Tabellen.

Du kannst eine Funktion in einer Variablen speichern:

local greet = function()
    print("Hello!")
end

greet()  -- Ausgabe: Hello!

Hier wird die Funktion der Variablen greet zugewiesen, und Sie können sie wie jede reguläre Funktion aufrufen. Dies eröffnet leistungsstarke Möglichkeiten für die Strukturierung Ihres Codes.

Funktionen können auch als Argumente an andere Funktionen übergeben werden. Dies ist besonders nützlich, wenn eine Funktion das in einer anderen definierte Verhalten verwenden soll:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Ausgabe: Hello from a function!

In diesem Beispiel erhält executeAction eine Funktion als Parameter und ruft diese auf. Die Funktion sayHello wird genauso übergeben, wie man eine Zahl oder einen String übergeben würde.

Funktionen können sogar andere Funktionen zurückgeben. Dies ermöglicht es Ihnen, Funktionen dynamisch basierend auf bestimmten Bedingungen oder Parametern zu erstellen:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Ausgabe: 10
challenge icon

Aufgabe

Einfach

Schreiben Sie eine Funktion applyOperation, die a, b und operation entgegennimmt und das Ergebnis der Anwendung der Operationsfunktion auf die beiden Zahlen zurückgibt.

Der Parameter operation ist eine Tabelle, die eine Funktion enthält, die mit a und b als Argumente aufgerufen wird.

Logik:

  • Extrahieren Sie die Funktion aus der Tabelle operation unter Verwendung des Schlüssels "func"
  • Rufen Sie diese Funktion mit a und b als Argumente auf
  • Geben Sie das Ergebnis zurück

Parameter:

  • a (Zahl): Erste Zahl
  • b (Zahl): Zweite Zahl
  • operation (Tabelle): Eine Tabelle, die eine Funktion enthält, die unter dem Schlüssel "func" gespeichert ist

Rückgabewert: Das Ergebnis des Aufrufs der Operationsfunktion mit a und b (Zahl)

Spickzettel

In Lua sind Funktionen Werte erster Klasse, die in Variablen gespeichert, als Argumente übergeben und von anderen Funktionen zurückgegeben werden können.

Eine Funktion in einer Variablen speichern:

local greet = function()
    print("Hello!")
end

greet()  -- Ausgabe: Hello!

Eine Funktion als Argument übergeben:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Ausgabe: Hello from a function!

Eine Funktion von einer anderen Funktion zurückgeben:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Ausgabe: 10

Probier es selbst

function applyOperation(a, b, operation)
    -- Code hier schreiben
end
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 Logic & Flow