Tabellenliterale
Wie in Lua werden Tabellen mit geschweiften Klammern definiert.
some_values = {1, 2, 3, 4}some_values = {1, 2, 3, 4}Anders als in Lua weist man einem Schlüssel in einer Tabelle mit : (statt =) einen Wert zu.
some_values = { name: "Bill", age: 200, ["Lieblingsessen"]: "Reis"}some_values = { name: "Bill", age: 200, ["Lieblingsessen"]: "Reis"}Die geschweiften Klammern können weggelassen werden, wenn eine einzelne Tabelle aus Schlüssel-Wert-Paaren zugewiesen wird.
profile = height: "4 Fuß", shoe_size: 13, favorite_foods: ["Eis", "Donuts"]profile = height: "4 Fuß", shoe_size: 13, favorite_foods: ["Eis", "Donuts"]Zeilenumbrüche können Werte statt eines Kommas trennen (oder zusätzlich):
values = { 1, 2, 3, 4 5, 6, 7, 8 name: "Superman" occupation: "Verbrechensbekämpfung"}values = { 1, 2, 3, 4 5, 6, 7, 8 name: "Superman" occupation: "Verbrechensbekämpfung"}Beim Erstellen eines einzeiligen Tabellenliterals können die geschweiften Klammern ebenfalls weggelassen werden:
my_function dance: "Tango", partner: "keiner"
y = type: "Hund", legs: 4, tails: 1my_function dance: "Tango", partner: "keiner"
y = type: "Hund", legs: 4, tails: 1Die Schlüssel eines Tabellenliterals können Sprach-Schlüsselwörter sein, ohne sie zu escapen:
tbl = { do: "etwas" end: "Hunger"}tbl = { do: "etwas" end: "Hunger"}Wenn du eine Tabelle aus Variablen konstruierst und die Schlüssel den Variablennamen entsprechen sollen, kannst du den Präfix-Operator : verwenden:
hair = "golden"height = 200person = { :hair, :height, shoe_size: 40 }
print_table :hair, :heighthair = "golden"height = 200person = { :hair, :height, shoe_size: 40 }
print_table :hair, :heightWenn der Schlüssel eines Feldes das Ergebnis eines Ausdrucks sein soll, kannst du ihn wie in Lua in [ ] setzen. Du kannst auch ein String-Literal direkt als Schlüssel verwenden und die eckigen Klammern weglassen. Das ist nützlich, wenn dein Schlüssel Sonderzeichen enthält.
t = { [1 + 2]: "hallo" "Hallo Welt": true}t = { [1 + 2]: "hallo" "Hallo Welt": true}Lua-Tabellen haben sowohl einen Array-Teil als auch einen Hash-Teil, aber manchmal ist es nützlich, hier eine semantische Unterscheidung zu treffen. Du kannst [ ] anstelle von { } verwenden, um eine Tabelle explizit als Array zu deklarieren; dadurch wird verhindert, dass Schlüssel-Wert-Paare hineingeschrieben werden.
some_values = [1, 2, 3, 4]list_with_one_element = [1, ]some_values = [1, 2, 3, 4]list_with_one_element = [1, ]