debug.getlocal (level, local) |
スタックレベル level の関数の、インデックス local のローカル変数の、名前と値を返す。 最初の引数かローカル変数がインデックス1で、以下同様に最後の有効なローカル変数まで続く。 もし指定されたインデックスのローカル変数がなければ nil を返し、 level が範囲外であればエラーを発する (debug.getinfo を使ってレベルが有効かどうかチェックできる)。
括弧)で始まる変数名は内部的な変数 (ループ制御変数、一時変数、Cの関数のローカルなど) を表している。
function hoge1(a,b,c) local d,e,f = a,b,c for i = 1, 1000 do local n,v = debug.getlocal(1, i) if n == nil then break end print(n, v) end end function hoge2(a,b,c) hoge1(a,b,c) end hoge2(1,2,3) --[[実行結果 a 1 b 2 c 3 d 1 e 2 f 3 (for index) 7 (for limit) 1000 (for step) 1 i 10 --]]