Lua Memo

ローカル変数の名前と値を返す

debug.getlocal (level, local)

スタックレベル level の関数の、インデックス local のローカル変数の、名前と値を返す。 最初の引数かローカル変数がインデックス1で、以下同様に最後の有効なローカル変数まで続く。 もし指定されたインデックスのローカル変数がなければ nil を返し、 level が範囲外であればエラーを発する (debug.getinfo を使ってレベルが有効かどうかチェックできる)。

括弧)で始まる変数名は内部的な変数 (ループ制御変数、一時変数、Cの関数のローカルなど) を表している。

sample

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
--]]