function values (t) local i=0 return function () i=i+1 return t[i] end end t = {10,20,30} for element in values(t) do print(element) end for element in values(t) do print(element) endこのように2回繰り返しても、ちゃんとfor in 単位でクロージャがリセットされるので期待通りの挙動となる。
t = {10,20,30} vt = values(t) for element in vt do print(element) end for element in vt do print(element) end