備忘録

プログラムやゲーム関連に関すること

【Lua】Tips

豆知識をこの記事に随時追加する。

ローカル変数のスコープについて

グローバル変数とローカル変数へのアクセス速度は後者が速く、
スコープを抜けるとガベージコレクションが働きデータの保守性が上がる
ローカル変数を使用する場合は必ずスコープの範囲で定義しないと
定義したそのチャンクを通過するとガベージコレクションが働く
以下コードでは repeat-until 内で定義したローカル変数を使用して
ループ判定を行っている(ver5.1以上)

function func()
	do
		local x = 0
		repeat
			x = x + 1
			local y = 10
			print(x)
		until x >= y
	end
end

return について

デバック処理等で関数の処理を呼ばずに1行目でリターンさせたい場合は
return をスコープ内で呼ぶ必要がある

function func()
	return -- error
	do return end -- ok
	-- 以下、関数の処理
end