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 単位でクロージャがリセットされるので期待通りの挙動となる。
以下のようにvtを用意してしまうと、当然変数寿命が維持されてしまい、
上手く動かなくなるので注意
t = {10,20,30}
vt = values(t)
for element in vt do
print(element)
end
for element in vt do
print(element)
end