Tabellen

塔伯伦信德Sammlungen von Einträgen mit Schlüsseln und Werten。Sie sinind die einzige aggregierte Datenstruktur zur Verfügung gestellt。Alle anderen Datenstrukturen(数组,监听,集合等)werden aus Tabellen erstellt。Tabellenschlüssel und -werte können beliebig sein, einschließlich anderer Tabellen。Schlüssel und Werte innerhalb derselben Tabelle können Typen mischen。

  • Tabellenkonstruktoren
  • Tabellenverwendung
  • Tabellen阵列
  • Tabellen Datensätze

Tabellenkonstruktoren

Mit Tabellenkonstruktoren können Sie eine Tabelle Mit Schlüsseln und zugehörigen Werten angeben。模具语法lautet

{[key1] = value1, [key2] = value2,…}

wobei die Schlüssel und Werte Ausdrücke sind。Wenn es siich bei den Schlüsseln um Zeichenfolgen handelt, die keine reservierten Wörter sind, können die Klammern und Anführungszeichen um die Schlüssel weggelassen werden。Beispiel:

{key1 = " value1 ", key2 = " value2 ", key3 = " value3 "}

Eine leere Tabelle wild einfach durch {} angegeben。

in Tabellenkonstruktor kann in einer Zuweisung verwendet werden, um eine变量auf eine Tabelle zu verweisen。Beispiele:

Local t1 ={} -将t1设置为空表Local t2 = {key1 = " value1 ", key2 = " value2 ", key3 = " value3 "}

Beachten Sie, dass Tabellen selbst匿名信德。Mehr als eine可变的柴油表。贝斯皮尔要塞:

local t3 = t2 - sowohl t2 als auch t3 beziehen sich auf dieselbe Tabelle

Tabellenverwendung

Wie erwartet, können Sie Schlüssel verwenden,嗯Werte in einer Tabelle zu finden。Die Syntax ist[Tabellenschlüssel], wobei Tabelle eine Tabellenreferenz ist (normalerweise eine Variable, der einer Tabelle zugewiesen wurde), und Schlüssel ist ein Ausdruck, der den Schlüssel bereitstellt。Wenn死于einem Ausdruck verwendet wid und under Schlüssel在der Tabelle vorhanden ist, wid der Wert zurückgegeben, der dem Schlüssel zugeordnet ist。Wenn sich der Schlüssel nicht in der Tabelle befindet, gibt dies null zurück。Wenn dies als变量在einer Zuweisung verwendet wid und under Schlüssel nicht在der Tabelle vorhanden ist, wid ein neuer Eintrag für den Schlüssel und den Wert erstelt。Wenn der Schlüssel bereits in der Tabelle vorhanden ist, wid der Wert des Schlüssels durch den neuen Wert ersetzt。Beispiele:

local t = {} - setzt auf eine leere Tabelle t[" k1 "] = " v1 " - erstelleinen eaung für den Schlüssel " k1 " und den Wert " v1 " v1 = t[" k1 "] - setzt v1 auf den Wert für Schlüssel " k1 " = " v1 " t[" k1 "] = " new_v1 " - setzt den Wert für Schlüssel " k1 " auf " new_v1 "

表格数组

Das traditionelle Array kann mit einer Tabelle mit Integer-Schlüsseln als Indizes implementiert werden。Ein Array kann beliebige Indizes haben, einschließlich negativer, aber die Konvention bestht darin, Arrays am Index 1 zu starten (nicht 0, wie es bei Sprachen wie C und Java der Fall ist)。Es gibt einen speziellen Tabellenkonstruktor für solche数组:

{value1, value2, value3,…}

array - referen sind dann[数组索引]。

Der Längenoperator # gibt die Anzahl Der element in einem Array mit aufeinanderfolgenden Indizes ab 1。Beispiel:

Local a = {" value1 ", " value2 ", " value3 "} Local length = #a -将length设置为数组a = 3的长度

阵列können dünn sein, wobei nur die definierten element zugewiesen werden。Aber # kann nicht für ein spärliches Array mit nicht aufeinanderfolgenden Indizes verwendet werden。Beispiel:

local sparse_array = {} - richte ein leeres Array ein sparse_array[1] = " value1 " - füge ein Element bei Index 1 sparse_array[99] = " value99 " hinzu - füge ein Element bei Index 99 hinzu

维数阵列können als Tabellen von Tabellen eingerichet werden。Zum Beispiel könnte eine 3x3-Matrix eingerichet werden durch:

本地m ={1,2,3},{4、5、6},{7 8 9}}lokal v22 = m[2][2]——setzt v22 auf 5

Tabellen Datensätze

Datensätze mit Feldern können als Tabellen mit Feldnamenschlüsseln implementiert werden。参考公式表。field kann für die Tabelle[" field "]verwendet werden。Beispiele:

本地姓名= {name = " John Smith ",电话= " 777-777-7777 "}本地姓名= person.name -设置姓名为" John Smith "

Ein Array von Tabellen kann für eine Sequenz von Datensätzen verwendet werden。Beispiel:

当地人= {{name = " John Smith ",电话= " 777-777-7777 "},{name = " Jane Doe ",电话= " 888-888-8888 "}…}

name = people[2].name - setzt den Namen auf " Jane Doe "

Tabellen