「失敗に学ぶこと」を読んで

失敗に学ぶことを読んで、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