2011-07-23 10 views
3
function foo() 
    return "a", "b", "c" 
end 

function bar() 
    return foo() 
end 

function process() 
    -- ... 
end 

function bar_store() 
    local v = foo() 
    process() 
    return v 
end 

print(bar())  -- A 
print(bar_store()) -- B 

結果:のLua:戻り値の項目の店舗不特定多数

a b c   -- A 
a     -- B 

がどのように私は、バージョンのようなBバージョンを作用させることができますか? "bar_store"では、任意の数の戻り値を返すことができる関数を呼び出す必要がありますが、関数呼び出しの後にいくつかの作業を行う必要があります(私の例では「プロセス」)

答えて

6

OK、自分の質問に少し答えるラメですが、

function bar_store() 
    local v = {foo()} 
    process() 
    return unpack(v) 
end 
+1

回答が見つかった場合は、それを見つけました。 – Puppy

+0

それが起こります。自分自身に小切手をつけて、それが答えられるようにする。 – BMitch

+0

foo()の戻り値を格納する一時テーブルを作成する必要はありません。あなたは以下を行うことができます:return process(foo()) – sylvanaar