2 Stimmen

Wie kann ich den Variablen Tabellennamen zuweisen?

Ich habe eine Tabelle in Lua mit einigen Daten.

sometable = { 
    {name = "bob", something = "foo"},
    {name = "greg", something = "bar"}
}

Ich möchte dann eine Schleife durch die Tabelle ziehen und jedem Namen eine Zahl als Variable zuweisen. Neu in Lua und versuchte es so.

for i,t in ipairs(sometable) do
    t.name = i
end

Ich nahm dann an, dass print("name1", bob) mir name1 = 1 geben würde. Im Moment erhalte ich null. Also bin ich zurück zu meiner hässlichen statischen Liste von Variablen, bis mir jemand sagt, dass ich ein Idiot bin.

4voto

Doug Currie Punkte 39584
> sometable = {{name = "bob", something = "foo"},{name = "greg", something = "bar"}}
> for i,t in ipairs(sometable) do t[t.name] = i end
> for i,t in ipairs(sometable) do for j,u in pairs (t) do print (j,u) end end      
name  bob
something foo
bob   1
greg  2
something bar
name  greg
> return sometable[1].bob
1>

-1voto

tjlevine Punkte 363

があります。 ipairs Funktion durchläuft nur numerisch indizierte Tabellen in aufsteigender Reihenfolge.

Sie sollten die Funktion Paare verwenden. Sie durchläuft jeden Schlüssel in der Tabelle, unabhängig von seinem Typ.

0 Stimmen

Das ist nicht das Problem; die Schleife war in Ordnung; er hätte t[t.name] = i anstelle von t.name = i verwenden sollen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X