Menu
Coddy logo textTech

Die Doppelpunkt-Syntax

Teil des Abschnitts Objektorientierte Programmierung der Lua-Journey von Coddy. Lektion 3 von 70.

Jedes Mal counter.increment(counter) zu schreiben, ist umständlich und fehleranfällig. Lua bietet eine sauberere Möglichkeit: den Doppelpunkt-Operator (:).

Wenn du eine Funktion mit einem Doppelpunkt definierst, fügt Lua automatisch self als ersten Parameter hinzu:

local player = {
    name = "Hero"
}

-- Doppelpunkt in der Definition verwenden
function player:greet()
    print("Hello, I am " .. self.name)
end

Der Doppelpunkt funktioniert auch beim Aufrufen der Funktion. Er übergibt die Tabelle automatisch als erstes Argument:

player:greet()  -- Ausgabe: Hello, I am Hero

Dies ist gleichbedeutend mit dem Schreiben von player.greet(player), aber deutlich sauberer. Der Doppelpunkt behandelt den self-Parameter an beiden Stellen: bei der definition und beim Aufruf.

Hier ist ein Vergleich, der zeigt, dass beide Ansätze identische Ergebnisse liefern:

local counter = { value = 0 }

-- Punktsyntax (explizites self)
function counter.increment(self)
    self.value = self.value + 1
end
counter.increment(counter)

-- Doppelpunktsyntax (automatisches self)
function counter:decrement()
    self.value = self.value - 1
end
counter:decrement()

Die Doppelpunkt-Syntax ist die standardmäßige Methode, um Methoden in Lua zu definieren und aufzurufen. Sie macht deinen Code kürzer und weniger repetitiv.

challenge icon

Aufgabe

Einfach

Erstelle eine Tabelle namens greeter mit einem Feld message, das mit einem Wert initialisiert wird, den du als Eingabe erhältst.

Füge eine Methode :sayHello(name) unter Verwendung der Doppelpunkt-Syntax hinzu, die die Begrüßung in diesem Format ausgibt:

[message], [name]!

Du erhältst zwei Eingaben:

  1. Die Begrüßungsnachricht, die in greeter.message gespeichert werden soll
  2. Einen Namen, der an die Methode :sayHello() übergeben werden soll

Definiere die Methode mit der Doppelpunkt-Syntax und rufe sie ebenfalls mit der Doppelpunkt-Syntax auf. Gib die formatierte Begrüßung aus.

Wenn die Nachricht beispielsweise Welcome und der Name Luna lautet, sollte die Ausgabe wie folgt aussehen:

Welcome, Luna!

Probier es selbst

-- Eingabe lesen
local message = io.read()
local name = io.read()

-- TODO: Schreibe deinen Code darunter
-- 1. Erstelle eine Tabelle namens 'greeter' mit einem Feld 'message'
-- 2. Füge eine Methode :sayHello(name) mit Doppelpunkt-Syntax hinzu
-- 3. Rufe die Methode mit Doppelpunkt-Syntax auf, um die Begrüßung auszugeben
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 Objektorientierte Programmierung

Übe selbstständig: Online-Lua-Compiler