Menu
Coddy logo textTech

Die Doppelpunkt-Syntax

Teil des Abschnitts Object Oriented Programming 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 eleganteren Weg: den Doppelpunkt-Operator (:).

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

local player = {
    name = "Hero"
}

-- Verwendung des Doppelpunkts in der Definition
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 entspricht dem Schreiben von player.greet(player), ist aber viel sauberer. Der Doppelpunkt verarbeitet den self-Parameter auf beiden Seiten – bei der Definition und beim Aufruf.

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

local counter = { value = 0 }

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

-- Doppelpunkt-Syntax (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 Ihren Code kürzer und weniger repetitiv.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Tabelle namens greeter mit einem Feld message, das mit einem Wert initialisiert wird, den Sie als Eingabe erhalten.

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

[message], [name]!

Sie erhalten zwei Eingaben:

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

Definieren Sie die Methode mit der Doppelpunkt-Syntax und rufen Sie sie mit der Doppelpunkt-Syntax auf. Geben Sie die formatierte Begrüßung aus.

Wenn die Nachricht zum Beispiel Welcome und der Name Luna ist, sollte die Ausgabe wie folgt aussehen:

Welcome, Luna!

Spickzettel

Der Doppelpunkt-Operator (:) bietet eine sauberere Syntax zum Definieren und Aufrufen von Methoden in Lua, indem er den self-Parameter automatisch verarbeitet.

Wenn eine Funktion mit einem Doppelpunkt definiert wird, wird self automatisch als erster Parameter hinzugefügt:

function player:greet()
    print("Hello, I am " .. self.name)
end

Wenn eine Funktion mit einem Doppelpunkt aufgerufen wird, wird die Tabelle automatisch als erstes Argument übergeben:

player:greet()  -- Entspricht player.greet(player)

Vergleich von Punkt-Syntax vs. Doppelpunkt-Syntax:

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

-- Doppelpunkt-Syntax (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, was den Code kürzer und weniger repetitiv macht.

Probier es selbst

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

-- TODO: Schreibe deinen Code unten
-- 1. Erstelle eine Tabelle namens 'greeter' mit einem Feld 'message'
-- 2. Füge eine Methode :sayHello(name) unter Verwendung der Doppelpunkt-Syntax hinzu
-- 3. Rufe die Methode unter Verwendung der 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 Object Oriented Programming