Funktionen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Funktionen sind Codeblöcke, die Sie auf Befehl mehrfach ausführen können. Sie können sie auch mit Ereignissen verbinden oder als Rückruffunktionen zuweisen.

Grundlegende Funktionen

Eine Funktionsdefinition umfasst:

  • Den Bereich der Funktion (global oder lokal).
  • Das Schlüsselwort function.
  • Den Namen der Funktion in camelCase.
  • Die Parameter der Funktion in Klammern (()).
  • Den Codeblock oder "Körper" der Funktion.
  • Das Schlüsselwort end.

Der Körper der Funktion wird ausgeführt, wenn Sie die Funktion aufrufen. Um eine Funktion aufzurufen, tippen Sie ihren Namen gefolgt von Klammern. Sie können eine Variable definieren, um den Rückgabewert zu akzeptieren, oder den Rückgabewert anstelle einer Variablen verwenden.


-- Diese Funktion hat keine Parameter und gibt nil zurück
local function addOneAndTwo()
local result = 1 + 2
print(result)
end
-- Aufruf einer Funktion ohne Rückgabe
addOneAndTwo() -- 3

Parameter

Parameter sind Variablen, die Sie der Funktion zur Verfügung stellen und die nur im Bereich der Funktion verwendet werden. Funktionen haben standardmäßig keine Parameter. Wenn Sie eine Funktion mit mehr Parametern aufrufen, als sie erwartet, ignoriert Luau die zusätzlichen Parameter. Wenn Sie eine Funktion mit weniger Parametern aufrufen, als sie erwartet, übergibt Luau nil für alle fehlenden Parameter.


-- Diese Funktion hat zwei Parameter: num1 und num2
local function addNumbers(num1, num2)
print(num1 + num2)
end
addNumbers(2, 3) -- 5
addNumbers(5, 6, 7) -- 11
addNumbers(9) -- Versuch, mit einer Zahl und nil eine arithmetische Operation (Addition) durchzuführen

Rückgabewert

Im Körper der Funktion gibt das Schlüsselwort return ein Ergebnis aus einer Berechnung zurück. Sie können mehrere Werte aus einer Funktion zurückgeben. return beendet die Ausführung der Funktion, und Luau erwartet, dass dem return-Befehl das Schlüsselwort end folgt, sodass das Schreiben von Code zwischen dem return-Befehl und dem end-Befehl einen Fehler auslöst.


-- Diese Funktion gibt einen Rückgabewert zurück
local function addNumbers(num1, num2)
local result = num1 + num2
return result
end
print(addNumbers(1, 2)) -- 3
local seven = addNumbers(3, 4)
print(seven) -- 7
-- Diese Funktion gibt mehrere Werte zurück: Summe und Differenz
local function addAndSubtract(num1, num2)
local sum = num1 + num2
local difference = num1 - num2
return sum, difference
end
-- Aufruf einer Funktion und Erwartung mehrerer Rückgabewerte
local sum, difference = addAndSubtract(2, 3)
print(sum) -- 5
print(difference) -- -1

Methoden

Methoden sind Funktionen, die Mitglieder eines Objekts sind, wie einer Klasse oder Tabelle. Sie erwarten das Objekt selbst (self) als ersten Parameter. Wenn Sie eine Methode aufrufen, verwenden Sie die Doppelpunktnotation (:), um self automatisch als ersten Parameter zu übergeben.

Alle Objekte in Roblox stammen von Instance ab und haben häufig verwendete Methoden wie Instance:Destroy(), Instance:Clone() und Instance:FindFirstChild().


local Workspace = game:GetService("Workspace")
-- Zerstören eines Teils mit Punktnotation (Funktion)
local firstPart = Instance.new("Part")
firstPart.Parent = Workspace
print(firstPart.Parent) -- Workspace
firstPart.Destroy(firstPart)
print(firstPart.Parent) -- nil
-- Zerstören eines Teils mit Doppelpunktnotation (Methode)
local secondPart = Instance.new("Part")
secondPart.Parent = Workspace
print(secondPart.Parent) -- Workspace
secondPart:Destroy()
print(secondPart.Parent) -- nil

Methoden definieren

Um eine Methode in einer Tabelle zu erstellen, verwenden Sie den Namen der Methode als Schlüssel und die Methodenfunktion als Wert. In der Definition der Methode bezieht sich der Parameter self auf die übergeordnete Tabelle der Methode. Wenn Sie eine Methode mit Doppelpunktnotation aufrufen, übergeben Sie die Tabelle selbst als ersten Parameter. Sie können Parameter für eine Methode definieren, müssen diese jedoch nach dem Parameter self auflisten.

Im folgenden Beispiel hat die Tabelle testButton eine Methode als Wert des Schlüssels changeEnabled. Sie können überprüfen, dass self auf die übergeordnete Tabelle der Methode verweist, indem Sie den Wert von self.enabled ausgeben.


local testButton = {
enabled = true,
changeEnabled = function(self, isEnabled)
self.enabled = isEnabled
print(self.enabled)
end
}
print(testButton.enabled) -- true
-- Methode aufrufen
testButton:changeEnabled(false) -- false

Rückruffunktionen

Rückruffunktionen sind Funktionen, die als Reaktion auf eine andere Funktion oder einen Prozess ausgeführt werden.

Grundlegende Rückruffunktionen

Funktionen können in andere Funktionen übergeben werden; zum Beispiel kann eine anonyme Funktion verwendet werden, um einen Rückruf zu implementieren, den table.sort() dann verwendet, um eine Liste von Players aus Players.GetPlayers() zu sortieren.


local Players = game:GetService("Players")
local sortedPlayers = Players:GetPlayers()
table.sort(sortedPlayers, function(a, b)
-- Verwenden Sie einen anonymen Rückruf, um Spieler nach Namen zu sortieren
return a.Name < b.Name
end)

Im Roblox API beziehen sich Rückruffunktionen auf ein schreibgeschütztes Funktionsmitglied, Rückruffunktionen warten, bis sie zurückgegeben werden. Häufig verwendete Rückruffunktionen sind:

Um einen Rückruf festzulegen, weisen Sie ihm eine Funktion zu. Zum Beispiel ist BindableFunction.OnInvoke ein Rückruf von BindableFunction. Sie können eine benannte oder anonyme Funktion dafür festlegen und können diese Funktion aufrufen (auslösen) indem Sie die :Invoke()-Methode auf dem Rückruf aufrufen. Die Argumente, die Sie an :Invoke() übergeben, werden an den Rückruf weitergeleitet, und der Rückgabewert der Rückruffunktion wird an den Aufrufer von :Invoke() zurückgegeben.


local bindableFunction = Instance.new("BindableFunction")
bindableFunction.OnInvoke = function(number)
return 2 * number
end
print(bindableFunction:Invoke(42)) -- 84

Funktionstechniken

Ereignisbehandler

Sie können eine Funktion, die als Ereignisbehandler bekannt ist, zuweisen, um auszuführen, wenn ein Ereignis ausgelöst wird. Beispielsweise können Sie eine Funktion namens onPlayerAdded() zum Ereignis Players.PlayerAdded erstellen, um den Namen des Spielers auszugeben, der beitritt. Weitere Informationen finden Sie unter Ereignisse.


local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.Name .. " ist dem Spiel beigetreten!")
end
Players.PlayerAdded:Connect(onPlayerAdded)

Anonyme Funktionen

Sie können Funktionen ohne Namen erstellen, die als anonyme Funktionen bekannt sind, um sie als Rückruffunktionen und Ereignisbehandler zu verwenden. Wie benannte Funktionen müssen anonyme Funktionen mit den Schlüsselwörtern function und end beginnen und enden, aber Sie benötigen nicht das Schlüsselwort local, um den lokalen Bereich anzuzeigen, da sie immer lokalen Bereich haben.

Im folgenden Beispiel sind der Rückruf für die Funktion task.delay() und der Ereignisbehandler für das Ereignis Players.PlayerAdded beides anonyme Funktionen.


-- Anonyme Funktion in einem Rückruf an task.delay()
task.delay(2, function(exactTimeElapsed)
print(exactTimeElapsed) -- 2.0064592329945
end)
-- Anonyme Funktion in einem Ereignisbehandler
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " ist dem Spiel beigetreten!")
end)

Funktionen in Modulscripts

Sie können Funktionen in ModulScripts speichern, um sie in mehreren Skripten wiederzuverwenden. Funktionen sind ein Luau-Datentyp, sodass Sie sie in Tabellen mit anderen Daten speichern können.

Variadische Funktionen

Eine variadische Funktion akzeptiert beliebig viele Argumente. Zum Beispiel ist Globals.LuaGlobals.print() eine variadische Funktion.


print(2, "+", 2, "=", 2 + 2) --2 + 2 = 4
print(string.format("Der %s ist ein %s!", "Kuchen", "Lüge")) -- Der Kuchen ist eine Lüge!
print(string.char(115, 101, 99, 114, 101, 116)) -- geheim

Variadische Funktionen definieren

Um eine variadische Funktion zu definieren, verwenden Sie das Token ... als letzten oder einzigen Parameter (nicht zu verwechseln mit .., dem Verkettungs- Operator). Sie können die ...-Werte in einer Tabelle zur einfacheren Verwendung zusammenfassen.


local function variadic(named, ...)
local arguments = {...} -- packe die zusätzlichen Argumente in eine Tabelle
print("Benanntes Argument =", named)
for i, value in arguments do
print("Eingabe Nr.", i, "=", value)
end
end
variadic(10, "Hallo", 20, "Variadische Funktion")
--[[ Ergebnis:
Benanntes Argument = 10
Eingabe Nr. 1 = Hallo
Eingabe Nr. 2 = 20
Eingabe Nr. 3 = Variadische Funktion
]]

Argumente weitergeben

Sie können variadische Funktionen als Wrapper um andere Funktionen definieren, um Argumente von dem Wrapper an die anderen Funktionen weiterzugeben.


local function printAround(functionToPrintAround, ...)
print("Vorher")
functionToPrintAround(...)
print("Nachher")
end
local function addNumbers(x, y, z)
print("x =", x)
print("y + z =", y + z)
end
printAround(addNumbers, 1, 2, 3)
--[[ Ergebnis:
Vorher
x = 1
y + z = 5
Nachher
]]

Eine variadische Funktion mit Arrays aufrufen

Wenn Sie ein Tabellenarray von Werten an eine globale variadische Funktion wie print() übergeben möchten, können Sie die globale Funktion unpack() verwenden, um die Werte der Tabelle anstelle der Tabelle selbst zu übergeben.


local squares = {1, 4, 9, 16, 25}
print("Die ersten 5 Quadratzahlen sind:", unpack(squares))
-- Die ersten 5 Quadratzahlen sind 1 4 9 16 25
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.