Tabellen mit Funktionen
Teil des Abschnitts Object Oriented Programming der Lua-Journey von Coddy — Lektion 1 von 70.
In Lua sind Tabellen unglaublich vielseitig. Über das Speichern von Daten hinaus können sie auch Funktionen enthalten. Dies ermöglicht es Ihnen, zusammengehörige Operationen zu gruppieren, wodurch Ihr Code organisiert und einfach zu verwalten bleibt.
Um eine Funktion in eine Tabelle einzufügen, weisen Sie sie einfach einem Schlüssel zu, genau wie jeden anderen Wert:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- Ausgabe: Hello, AliceSie können die Funktion auch separat definieren und sie dann der Tabelle hinzufügen:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endOder verwende diese sauberere Kurzschreibweise:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endAlle drei Ansätze führen zum gleichen Ergebnis. Sie rufen die Funktion mit der Punktnotation auf: myTable.greet("Alice"). Dieses Muster, Funktionen mit Daten zu bündeln, ist die Grundlage der objektorientierten Programmierung in Lua.
Aufgabe
EinfachErstellen Sie eine Tabelle namens calculator, die vier arithmetische Funktionen enthält:
add(a, b)- gibt die Summe vonaundbzurücksubtract(a, b)- gibtaminusbzurückmultiply(a, b)- gibt das Produkt vonaundbzurückdivide(a, b)- gibtageteilt durchbzurück
Sie erhalten drei Eingaben:
- Einen Operationsnamen (einer von:
add,subtract,multiply,divide) - Erste Zahl
- Zweite Zahl
Rufen Sie die entsprechende Funktion aus Ihrer calculator-Tabelle basierend auf dem Operationsnamen auf und geben Sie das Ergebnis aus.
Spickzettel
In Lua können Tabellen Funktionen zusammen mit Daten speichern. Um eine Funktion zu einer Tabelle hinzuzufügen, weisen Sie sie einem Schlüssel zu:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- Ausgabe: Hello, AliceSie können Funktionen auch separat definieren und sie der Tabelle hinzufügen:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endOder verwenden Sie die Kurzschreibweise:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endRufen Sie Tabellenfunktionen mit der Punktnotation auf: myTable.greet("Alice")
Probier es selbst
-- Eingaben lesen
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: Erstelle eine Rechner-Tabelle mit vier Funktionen:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: Rufe die entsprechende Funktion aus der Rechner-Tabelle unter Verwendung des Operationsnamens auf
-- und gib das Ergebnis ausDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Object Oriented Programming
1Das 'self'-Konzept
Tabellen mit FunktionenExplizites 'self'Die Doppelpunkt-SyntaxPunkt vs. DoppelpunktZusammenfassung – Beweglicher Punkt4Projekt: Digitale Bank
Projekt-SetupEinzahlungsmethode7Polymorphie & Überschreiben
Methoden überschreibenElternmethoden aufrufenDuck TypingGemeinsames InterfaceTyp prüfenRückblick - Mitarbeiterrollen10Projekt: Formen-Manager
Projekt-SetupRechteck-Klasse2Klassen-Prototyp-Muster
Das Prototyp-KonzeptVerknüpfung mit __indexDer :new()-KonstruktorAttribute initialisierenUnabhängige InstanzenZusammenfassung – Autofabrik5Operatorüberladung in OOP
Objekte addierenObjekte subtrahierenObjekte verkettenObjekte vergleichen (<, >)Rückblick – Wallet-Mathematik3Objektzustand und -verhalten
InstanzvariablenGetter-MethodenSetter-MethodenBerechnete EigenschaftenStrings formatierenGleichheitsprüfungenZusammenfassung – Studentennote6Grundlagen der Vererbung
Das Vererbungs-SetupMethoden vererbenDen Konstruktor erweiternChild-Methoden hinzufügenGemeinsam vs. EinzigartigZusammenfassung - Formen-Hierarchie9Komposition & Mixins
Has-A-BeziehungDelegationEinfache MixinsAnwendung mehrerer MixinsMixins vs. VererbungZusammenfassung – Roboter-Montage12Abschluss-Herausforderungen
Wiederholung - InventarsystemWiederholung - BenutzerverwaltungWiederholung - Score-TrackerFinaler OOP-Check