2012-03-28 7 views
0

Ich erstellte eine komplexe Tabelle von Tabellen und verwendet eine Variable als Indizes. Aus irgendeinem Grund hatte ich Probleme mit meinem Code, der sehr fehlerhaft ist.Lua Tabelle Indizierungsprobleme zwischen Zeichenfolgen und Ganzzahlen

Es stellte sich heraus, dass ich den Index konvertieren

reiht So

myTable[index] 

benötigt

myTable[tostring(index)] 

sonst

Manchmal als String handeln würde Index werden und zu anderen Zeiten würde es als Integer fungieren (Ich habe den Index nie in eine Zeichenkette in einem y Punkt im Code obwohl.

Dies verursacht Probleme, weil myTable[1] und myTable["1"] würde geschaffen werden und beide wäre anders (und ich war Schleifen über den k/v Paare und so würde myTable[1] nicht angezeigt).

Das ist sehr seltsames Verhalten, aber ich denke, wird erwartet? Gibt es eine Möglichkeit, einen neuen Typ zu erstellen, der auf einer Tabelle basiert, die immer String-Indizes verwendet, so dass dieses Kidnastück vermieden werden könnte?

Antwort

6

Lua synchronisiert automatisch zwischen Zeichenfolgen und Zahlen, abhängig vom Kontext, in dem sie verwendet werden (siehe manual und wiki page).

Es scheint, dass irgendwo auf dem Weg, Sie in den Index entweder aus einer Datei lesen, oder Sie verwenden Zeichenfolge Verkettung Operator .., und es wird eine Zeichenfolge. Mir scheint, dass Sie nur numerische Indizes verwenden möchten.

Um sicherzustellen, dass index eine Nummer bleibt, verwenden Sie tonumber() nach jeder Verarbeitung oder Lesen aus einer Datei - index = tonumber(index). In der Ansicht von Lua-Tabelle sind 1 und "1" unterschiedliche Schlüssel.

Verwandte Themen