Jump to content

Tabellen-/ Listenname aus Variable


siggi

Empfohlene Beiträge

Hallo,

stehe mal wieder auf dem Schlauch, obwohl icj mich seit ca. 2 Wochen mit Lua beschäftige, bekomme ich ein Problem nicht gelöst.
Wie spreche ich ein Tabelle über eine Variable an?
Hier mein Skript:
 

1  -- Deklaration
2  local tblFahrzTypen   = $("Ereignisse").variables["FahrzeugTypen"]
3  local BahnListe      = {}
4  local StrassenListe  = {}
5  local LuftListe      = {}
6  local WasserListe    = {}
7
8  -- Tabelle auslesen
9  for index, Art in pairs(tblFahrzTypen) do
10 print(index)
11 local tblTemp = tblFahrzTypen [index]
12   for Typ, TypText in pairs(tblTemp) do
13     ListenName = (index.."Liste")
14     print(ListenName)
15     table.insert(ListenName, Typ.." - "..TypText)
16   end
17 end

Es geht um die Zeilen 13 und 15, in Zeile 13 wird der Tabellenname erzeugt (ListenName =..),
in Zeile 15 soll die Tabelle gefüllt werden.
In Zeile 15 erfolgt dann die Fehlermeldung "Table expected, got string".
Wie mach ich aus einen String einen Tabellennamen?

Gruß und schönen Abend

Siggi

Link zu diesem Kommentar
Auf anderen Seiten teilen

In Zeile 13 bildest du einen String.
Ein String ist keine Variable und du kannst ihn auch nicht einfach anstelle eines Variablennamens einsetzen.

Aber ein String kann ein Tabellenindex sein.

Index sagt man wohl eigentlich nur bei Zahlen. Also schreibe ich lieber: Der Bezeichner eines Tabellenplatzes kann ein String sein.

Wären deine Listen alle Untertabellen einer übergeordneten Tabelle, dann wären ihre Namen Bezeichner: 

-- Deklaration
local tblFahrzTypen   = $("Ereignisse").variables["FahrzeugTypen"]
local ListenSammlung = { BahnListe = {}, StrassenListe = {}, LuftListe = {},  WasserListe = {} }

-- Tabelle auslesen
for index, Art in pairs(tblFahrzTypen) do
  print(index)
  for Typ, TypText in pairs(Art) do
    ListenName = (index.."Liste")
    print(ListenName)
    table.insert(ListenSammlung[ListenName], Typ.." - "..TypText)
  end
end

Lua verwaltet sämtliche Variablen, Tabellen, Funktionen etc. in einer einzigen Tabelle namens _ENV
Damit kannst du das, was ich mittels übergeordneter Tabelle erledigt habe, auch direkt mithilfe von _ENV machen.

Aber das obige Beispiel ist für das Verständnis die bessere Wahl.

in deinem tblFahrzTypen [index] in Zeile 11 steht übrigens genau das was du zuvor in Zeile 8 an die Variable Art übergibst.
Die Hilfsvariable tblTmp ist also überflüssig. Nimm stattdessen einfach Art (siehe Zeile 8 in meinem Beispiel)

Gruß
Götz

P.S.: Zeilennummern haben in einem Lua Skript nichts verloren. Bitte nicht mit kopieren.

Bearbeitet von Goetz
Schreibfehler korrigiert
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...