0Pricing
Lua Academy · Lektion

Tabellen als Wörterbücher

Verwenden Sie Zeichenketten und gemischte Schlüssel zum Speichern von Schlüssel-Wert-Paaren

Tabellen als Wörterbücher ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Schlüssel vom Typ String

Tabellen mit Schlüsseln vom Typ String verhalten sich wie Dictionaries (Hash-Maps). Greifen Sie mit der Punktnotation t.key (für gültige Bezeichner) oder der Klammernotation t["key"] (für beliebige Strings) auf Felder zu. Beide Formen sind gleichwertig; die Klammernotation unterstützt dynamische Schlüssel.

local user = {}
user.name = "Alice"
user["age"] = 30
user.role = "admin"

print(user.name)        -- Alice
print(user["age"])      -- 30

local field = "role"
print(user[field])      -- admin (dynamic key)

Tabellenliterale

Dictionaries können mit einem Tabellenliteral und der Syntax key = value initialisiert werden. Dies ist die üblichste Methode, um in Lua Records zu erstellen. Sie können Einträge im Array- und im Dictionary-Stil in einem Literal kombinieren.

local config = {
  host = "localhost",
  port = 3306,
  database = "myapp",
  debug = false,
  tags = {"web", "api"},  -- nested array
}

print(config.host)        -- localhost
print(config.port)        -- 3306
print(config.tags[1])     -- web

Zählen mit Dictionaries

Ein klassischer Anwendungsfall für Dictionaries ist das Zählen von Häufigkeiten. Iterieren Sie über eine Liste, verwenden Sie jedes Element als Schlüssel und erhöhen Sie den Zähler. Prüfen Sie vor dem Erhöhen auf nil – verwenden Sie count[word] or 0 als Ausgangswert.

local words = {"lua","is","fast","lua","is","lua"}
local freq = {}

for _, w in ipairs(words) do
  freq[w] = (freq[w] or 0) + 1
end

for word, count in pairs(freq) do
  print(word, count)
end
-- lua 3, is 2, fast 1

Gruppieren mit Dictionaries

So gruppieren Sie Daten nach einer Eigenschaft: Iterieren Sie über die Liste und verwenden Sie den Gruppierungsschlüssel, um Elemente an eine Liste in einem Dictionary anzuhängen. Dies entspricht in Lua dem SQL-Operator GROUP BY oder dem Muster defaultdict aus Python.

local people = {
  {name="Alice", dept="eng"},
  {name="Bob",   dept="hr"},
  {name="Carol", dept="eng"},
  {name="Dave",  dept="hr"},
}
local groups = {}

for _, p in ipairs(people) do
  local d = p.dept
  groups[d] = groups[d] or {}
  groups[d][#groups[d]+1] = p.name
end

print(table.concat(groups.eng, ", "))  -- Alice, Carol

Vorhandensein von Schlüsseln prüfen

Prüfen Sie, ob ein Schlüssel vorhanden ist, indem Sie seinen Wert mit nil vergleichen. Seien Sie vorsichtig: Wenn der unter einem Schlüssel gespeicherte Wert tatsächlich nil ist, gilt der Schlüssel als nicht vorhanden. Für Vorhandenseinskennzeichen speichern Sie stattdessen true als Wert.

local cache = {result=42, mode="fast"}

if cache.result ~= nil then
  print("cached:", cache.result)  -- 42
end

-- Key not present:
if cache.timeout == nil then
  print("no timeout set")
end

-- Membership set pattern
local allowed = {admin=true, editor=true}
if allowed["admin"] then
  print("access granted")
end

Schlüssel löschen

Setzen Sie einen Tabellenschlüssel auf nil, um ihn zu entfernen. Das Schlüssel-Wert-Paar verschwindet, und der Garbage Collector kann den Speicher des Werts wieder freigeben. Auf diese Weise können Sie keine lokale Variable löschen – nur Tabelleneinträge.

local session = {token="abc123", user="Alice", expires=3600}
print(session.token)   -- abc123

session.token = nil
print(session.token)   -- nil (removed)

-- Count remaining keys
local count = 0
for _ in pairs(session) do count = count + 1 end
print(count)   -- 2

Dictionaries zusammenführen

Führen Sie zwei Tabellen zusammen, indem Sie über eine Tabelle iterieren und ihre Einträge in die andere kopieren. Wenn beide denselben Schlüssel haben, setzt sich der Wert der zweiten Tabelle durch. Dies entspricht in Lua dem Object.assign aus JavaScript.

local defaults = {color="blue", size=12, bold=false}
local overrides = {color="red", italic=true}

local function merge(base, over)
  local result = {}
  for k, v in pairs(base) do result[k] = v end
  for k, v in pairs(over) do result[k] = v end
  return result
end

local opts = merge(defaults, overrides)
print(opts.color, opts.size, opts.italic)  -- red 12 true

Beliebiger Schlüsseltyp

Tabellenschlüssel können beliebige Werte sein, die weder nil noch NaN sind: Strings, Zahlen, boolesche Werte, Funktionen und sogar andere Tabellen. Ganzzahlige Schlüssel und String-Schlüssel werden intern unterschiedlich gespeichert, aber einheitlich mit der Klammernotation angesprochen.

local t = {}
local function myKey() end

t["string"] = 1
t[42] = 2
t[true] = 3
t[myKey] = 4

print(t["string"])  -- 1
print(t[42])        -- 2
print(t[true])      -- 3
print(t[myKey])     -- 4

Geordnete Iteration

pairs() in Lua garantiert keine Reihenfolge der Iteration. Um in einer festgelegten Reihenfolge zu iterieren, sammeln Sie die Schlüssel in einem Array, sortieren Sie es und iterieren Sie anschließend darüber.

local scores = {Alice=95, Bob=87, Carol=91, Dave=78}

local names = {}
for name in pairs(scores) do
  names[#names+1] = name
end
table.sort(names)

for _, name in ipairs(names) do
  print(name, scores[name])
end
-- Alice 95, Bob 87, Carol 91, Dave 78 (sorted)

Muster für Standardwerte

Ein nützliches Muster ist eine über eine __index-Metatabelle angesprochene Tabelle mit „defaults“. Wenn ein Schlüssel in der Haupttabelle nicht gefunden wird, sucht Lua ihn in der Tabelle mit den Standardwerten. So können Sie eine geschichtete Konfiguration ermöglichen, ohne Tabellen zusammenzuführen.

local defaults = {timeout=30, retries=3, verbose=false}
local config = {timeout=60}

setmetatable(config, {__index = defaults})

print(config.timeout)  -- 60  (overridden)
print(config.retries)  -- 3   (from defaults)
print(config.verbose)  -- false (from defaults)

Schnelltest

Wie entfernen Sie in Lua den Schlüssel "x" aus der Tabelle t?

Rückblick: Tabellen als Dictionaries

Wichtige Punkte:

  • Punkt- und Klammernotation: t.key == t["key"]
  • Jeder Wert, der weder nil noch NaN ist, kann ein Schlüssel sein
  • Setzen Sie einen Schlüssel auf nil, um ihn zu löschen
  • Häufigkeiten zählen: t[k] = (t[k] or 0) + 1
  • Geordnete Iteration: Schlüssel sammeln → sortieren → iterieren
  • Verwenden Sie eine __index-Metatabelle für Standardwerte

Häufig gestellte Fragen

Ist die Lektion „Tabellen als Wörterbücher“ kostenlos?

Ja — der vollständige Text von „Tabellen als Wörterbücher“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Tabellen als Wörterbücher“?

Verwenden Sie Zeichenketten und gemischte Schlüssel zum Speichern von Schlüssel-Wert-Paaren Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Tabellen als Wörterbücher“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Tabellen als Arrays
  2. Tabellen als Wörterbücher
  3. Tabellen mit pairs und ipairs durchlaufen
  4. Verschachtelte Tabellen und strukturierte Daten
← Zurück zu Lua Academy