「失敗に学ぶこと」を読んで
失敗に学ぶことを読んで、Luaだとどうなるか確認してみます。
function main() local t = {} for i = 1, 3 do t[#t + 1] = function() print("call", i) end end for i = 1, #t do t[i]() end end main()
実行結果です。
call 1 call 2 call 3
お、ちゃんと値が異なっている。
値を共有するサンプルも書いてみます。
function main() local t = {} local x = 0 for i = 1, 3 do t[#t + 1] = function() print("x", x); x = x + 1 end end for i = 1, #t do t[i]() end end main()
実行結果です。
x 0 x 1 x 2