Generic for メモ
微妙にブラックボックスなfor in文がだいたいわかったのでメモ。
詳しくはProgramming in Lua 7章。
for k, v in pairs(t) do print(k, v) end
は
-- for 代入する変数 in interator関数, 不変状態, 制御変数初期値 -- , nilは通常省略 -- 代入される変数にはiterator関数の2つめ以降の返り値が代入される。 -- ひとつめの返り値は制御変数。 for k, v in next, t, nil do print(k, v) end
と等価。さらにこれは多分
do -- 制御変数 local cond while true do local k, v -- iterator関数を実行して制御変数の更新と値の代入 cond, k, v=next(t, cond) if not cond then break end print(k, v) end end
とほぼ等価(だと思う)。