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 mühsam und fehleranfällig. Lua bietet einen saubereren Weg: den colon (:)-Operator.

Wenn Sie eine Funktion mit einem Doppelpunkt definieren, 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 automatisch die Tabelle als erstes Argument:

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

Das ist äquivalent zu player.greet(player), aber viel sauberer. Der Doppelpunkt kümmert sich um den self-Parameter auf beiden Seiten — während der Definition und während des Aufrufs.

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 der Standardweg, um Methoden in Lua zu definieren und aufzurufen. Sie macht deinen Code kürzer und weniger repetitiv.

challenge icon

Aufgabe

Einfach

Erstelle eine table greeter mit einem field message, das auf einen Wert initialisiert wird, den du als input erhältst.

Füge eine method :sayHello(name) using der Colon-syntax hinzu, die den greeting in diesem Format ausgibt (print):

[message], [name]!

Du erhältst zwei Eingaben:

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

Definiere die method unter Verwendung der Colon-syntax und rufe sie mit der Colon-syntax auf. Gib den formatierten greeting aus.

Wenn zum Beispiel die message Welcome und der name Luna ist, sollte die Ausgabe (Output) 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