2017-04-03 7 views
1

私は変数のテーブルを引数として関数呼び出しにアンパックしようとしています。要するに、私はこれを行うことで自分のプロセスに依存性注入を模倣することを見ている。私がhttps://www.lua.org/cgi-bin/demoでこれを行うと、アンパックがゼロであることがわかります。それは削除されたようですか?そこにオブジェクトインスタンスを持つテーブルを渡す代わりにこれを行う別の方法がありますか?私は自分のPostStart()呼び出しで各オブジェクトを指定するのが好きです。ルア5.3アンパック

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

あなたのコードの最上部でこれを行う 'unpack = table.unpack or unpack' – tonypdmtr

+0

ああ、それは簡単だった。ありがとう:) – user441521

答えて

3

オンラインLuaデモでは、最新バージョンのLuaが実行されています。現在は5.3です。

ルア5.2では、unpacktable.unpackに移動しました。