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を前提としているということが分かると思います。