Luaのイテレータ

Luaにはイテレータ用の関数が用意されています。
テーブルのキーが文字列の場合は pairs関数、数字の場合はipairs関数を使用します。

pairs関数

文字列がキーの場合はpairs関数を使います。

t = {}
t["str1"] = "str1"
t["str2"] = "str2"
t["str3"] = "str3"

for i, ver in pairs(t) do
	print(ver)
end

上記の例ではテーブル t に格納されている全ての値を表示します。
ただし、文字列をキーとするテーブルでは表示される順序が不定です。
もし、順序を一定にしたい場合は数字をキーとしてテーブルを作成するようにしましょう。

ipairs関数

数字がキーの場合はipairs関数を使います。
使い方はpairs関数と同じです。

t = {}
t[1] = "value1"
t[2] = "value2"
t[3] = "value3"

for i, ver in ipairs(t) do
	print(ver)
end

前節でテーブルのキーは1からが前提になっていると説明しましたが、iparis関数もそのようになっています。

試しに以下のコードを実行してみてください。

t = {}
t[0] = "value0"
t[1] = "value1"
t[2] = "value2"
t[3] = "value3"

for i, ver in ipairs(t) do
	print(ver)
end

実行した結果では、value0 は表示されず、value1から表示されたはずです。
この結果からテーブルの添え字が1を前提としているということが分かると思います。



inserted by FC2 system