Tabellenerstellung & unpack()
Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 6 von 54.
Lua bietet ein komplementäres Paar von Techniken für die Arbeit mit mehreren Werten: Tabellenkonstruktion und table.unpack(). Diese sind besonders nützlich bei der Arbeit mit Funktionen, die eine flexible Argumentbehandlung erfordern.
Sie können mehrere Werte in einer tabellenartigen Liste erfassen, indem Sie die Tabellen-Konstruktor-Syntax mit geschweiften Klammern verwenden. Dies fasst alle Werte in einer einzigen Tabellenstruktur zusammen.
local args = {10, 20, 30}
print(args[1]) -- Ausgabe: 10
print(#args) -- Ausgabe: 3Die Funktion table.unpack() bewirkt das Gegenteil – sie nimmt eine Tabellenliste entgegen und gibt alle ihre Elemente als separate Werte zurück. Dies ermöglicht es Ihnen, Tabelleninhalte als einzelne Argumente an eine Funktion zu übergeben.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Ausgabe: 5 10 15Diese Techniken arbeiten nahtlos zusammen. Sie können Werte in einer Tabelle sammeln, die Tabelle bearbeiten und sie dann wieder in einzelne Werte entpacken.
Aufgabe
EinfachSchreiben Sie eine Funktion forwardArguments, die drei Zahlen a, b und c entgegennimmt und deren Summe zurückgibt, indem sie Tabellenkonstruktion und table.unpack() verwendet.
Erstellen Sie eine Tabelle, die die drei Argumente mit der Syntax {a, b, c} enthält, entpacken Sie diese dann und übergeben Sie sie an eine andere Funktion, die deren Summe berechnet.
Logik:
- Verwenden Sie
{a, b, c}, um eine Tabelle zu erstellen, die alle drei Argumente enthält - Erstellen Sie eine separate Funktion namens
sum, die drei Parameter entgegennimmt und deren Summe zurückgibt - Verwenden Sie
table.unpack(), um die Tabellenwerte an die Funktionsumzu übergeben - Geben Sie das Ergebnis der Funktion
sumzurück
Parameter:
a(Zahl): Erste Zahlb(Zahl): Zweite Zahlc(Zahl): Dritte Zahl
Rückgabewert: Die Summe aller drei Zahlen (Zahl)
Spickzettel
Tabellen-Konstruktor-Syntax {a, b, c, ...} erstellt eine listenartige Tabelle. Verwenden Sie #, um die Anzahl der Elemente zu erhalten.
local args = {10, 20, 30}
print(args[1]) -- Ausgabe: 10
print(#args) -- Ausgabe: 3table.unpack() nimmt eine listenartige Tabelle entgegen und gibt alle ihre Elemente als separate Werte zurück, was es Ihnen ermöglicht, Tabelleninhalte als einzelne Argumente an eine Funktion zu übergeben.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- Ausgabe: 5 10 15Probier es selbst
function forwardArguments(a, b, c)
-- Erstelle eine separate Funktion, die die Summe berechnet
-- Erstelle eine Tabelle, die alle drei Argumente enthält
-- Entpacke die Tabelle und übergib die Werte an die Summenfunktion
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle