2017-07-03 3 views
0

関数引数を含むLuaテーブルをダンプすることは可能でしょうか? もしそうなら、どうすればいいですか?引数を指定してlua funcをダンプする

私はテーブルをダンプしてアドレスを扱うことができましたが、関数の引数を取得する方法を見つけることができませんでした。私は別の方法を試しましたが、運はありません。

だから私はそれらの真実をダンピングテーブルと関数と関数の引数を受け取るしたい。 出力は次のようになります。Function JumpHigh(Player、height)

これは可能かどうかわかりませんが、非常に便利です。

+1

あなたは本当にどのような問題を解決しようとしていますか? – lhf

+0

あなた自身を説明するためにコードを使用する方がはるかに明確です。 –

答えて

1

テーブルには値のみが格納されます。

関数がテーブルに格納されている場合、それは単なる関数本体であり、引数はありません。引数が適用された場合、tableはその呼び出しの最終結果のみを格納します。

多分、あなたはクロージャーについて話しているかもしれません - 他の関数から返された関数は、字句解析のトップレベル関数からいくつかの引数を取り込みますか?次に閉鎖の内容を確認する機能debug.getupvalue()を参照してください。

これはあなたが尋ねるものですか?

local function do_some_action(x,y) 
    return function() 
     print(x,y) 
    end 
end 

local t = { 
    func = do_some_action(123,478) 
} 

-- only function value printed 
print "Table content:" 
for k,v in pairs(t) do 
    print(k,v) 
end 

-- list function's upvalues, where captured arguments may be stored 
print "Function's upvalues" 
local i = 0 
repeat 
    i = i + 1 
    local name, val = debug.getupvalue(t.func, i) 
    if name then 
     print(name, val) 
    end 
until not name 

格納されたupvaluesは、トップレベル関数の引数である必要はありません。内部関数の事前計算値を格納しているローカル変数もあります。

また、スクリプトがデバッグ情報を削除してLuaバイトコードにプリコンパイルされている場合、アップルの名前は取得されず、空になります。

関連する問題