Lua演習

制御構文2 ループ処理

この課ではループ、すなわち繰り返して一定の動作をおこなう処理について学習する。

ループ処理の必要性について

たとえば、同じ内容の文を10行にわたって表示しようとしたとき、いかのような記述はいかにも冗長である。

function OnFrame()
	out(0, "さばとたんかわいいよ");
	out(1, "さばとたんかわいいよ");
	out(2, "さばとたんかわいいよ");
	out(3, "さばとたんかわいいよ");
	out(4, "さばとたんかわいいよ");
	out(5, "さばとたんかわいいよ");
	out(6, "さばとたんかわいいよ");
	out(7, "さばとたんかわいいよ");
	out(8, "さばとたんかわいいよ");
	out(9, "さばとたんかわいいよ");
end

そこで、このような同じ動作の反復を容易にするための構文がLuaには用意されており、それを用いると以下のように 簡潔な記述が可能となる

function OnFrame()
	for i = 0, 9, 1 do
		out(i, "さばとたんかわいいよ");
	end
end

このように同じ内容を反復して実行することをループ処理といい、Luaにはそのための構文が「for」「while」「repeat」の 3種類ある。それぞれの詳細については以下で説明する。

for文

for文の説明

function OnFrame()
	for i = 0, 9, 1 do--0, 9, 1の値は適宜いじるべし
		out(i, "さばとたんかわいいよ");
		--i = 100;--ダメ、ゼッタイ
	end
end

上の例で用いられているのがfor文である。for文は一定の回数ループを実行するのに向いている。

ループはループ変数(この場合は"i")が初期値(この場合は0)から始まり、終了値(この場合は9)以上になるまで実行される。また、ループ変数は1回ループしてfor文の最初に戻ってくるたびにstep値(この場合は1)ずつ加算される。

ループ変数はループ内部で「今は何回目のループなのか」を取得するために用いることができる。なお、ループ内部でループ変数に代入を行ってはならない。ダメ、ゼッタイ。

また、最初にfor文に到達した時点で初期値が終了値より大きい場合はfor文は一度も実行されない。

step値の初期値

step値は、特に指定しない、つまり"for i = 1, 9 do"と書いた場合、は1とみなされる。通常のループではこれで足りる場合も非常に多い。

負のstep値の例外

以下ではstep値が負の場合の例外について説明する。

function OnFrame()
	for i = 20, 11, -1 do--適宜いじるべし
		out(i, "さばとたん、ああさばとたん"); 
	end
end

step値に負の値(この場合は-1)を入れた場合、通常とは逆にループ変数が終了値以下になるまでループする。 それ以外は通常と同じである。

前:第2課 制御構文1 次:第4課 function


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-16 (日) 21:52:13