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

途中で止まった。