pairs()とipairs()の挙動確認
一つのテーブルを配列兼連想配列的に使ったら、pairs()とipairs()した時にどのような挙動になるかを確認。
system.lua
local t = {} for i = 1, 10 do t[i] = i t["t"..i] = "t"..i end local text = "" text = "" for key, value in pairs(t) do text = text .. key .. " " end NSOkBox(text, "pairs") text = "" for i, num in ipairs(t) do text = text .. i .. " " end NSOkBox(text, "ipairs")
結果
1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10
両方やったらipairs()使う必要なし!※key, value部分は順序不特定です。本当は。
もういっちょ
local t = {} for i = 1, 10 do if i ~= 5 then t[i] = i end end local text = "" text = "" for key, value in ipairs(t) do text = text .. key .. " " end NSOkBox(text, "ipairs")
故意に途中の抜けた配列をipairs()してみたら。
1 2 3 4
途中で止まった。