2017-04-03 3 views
1

Ich versuche, eine Tabelle von Variablen in einen Funktionsaufruf als Argumente zu entpacken. Kurz gesagt, ich versuche, Abhängigkeitsinjektionen in meinen Prozess zu imitieren, indem ich dies tue. Wenn ich das bei https://www.lua.org/cgi-bin/demo mache, sagt es mir, dass Entpacken ist Null. Es scheint, dass es entfernt wurde? Gibt es einen alternativen Weg, dies zu tun, anstatt eine Tabelle zu übergeben, in der sich die Objektinstanzen befinden? Ich mag die Idee, jedes Objekt in meinem PostStart() - Aufruf anzugeben.Lua 5.3 entpacken

Object1 = {} 

function Object1:Create() 
    local obj = {} 

    obj.name = "Object1" 

    return obj 
end 

Object2 = {} 

function Object2:Create() 
    local obj = {} 

    obj.name = "Object2" 

    return obj 
end 

function PostStart(obj1, obj2) 
    print(obj1.name, obj2.name) 
end 

objs = {} 
table.insert(objs, Object1:Create()) 
table.insert(objs, Object2:Create()) 

PostStart(unpack(objs)) 
+1

Tun Sie dies an der Spitze Ihres Codes 'unpack = table.unpack oder entpacken Sie ' – tonypdmtr

+0

Oh, das war einfach. Vielen Dank :) – user441521

Antwort

3

Die Online-Lua-Demo läuft die neueste Version von Lua, die derzeit 5.3 ist. In Lua 5.2 wurde unpack in table.unpack verschoben.