Luaのlocal function

function main()
    function test()
        print("test")
    end
    test()
end

main()
test()

実行結果です。

test
test

testがmainの外側から見えてしまっています。

関数内でローカル関数を定義する場合は、local functionを使います。

function main()
    local function test()
        print("test")
    end
    test()
end

main()
test()

実行結果です。

test
lua: a.lua:40: attempt to call global 'test' (a nil value)
stack traceback:
	a.lua:40: in main chunk
	[C]: in ?

local functionを使うのは関数内でローカル関数を定義するくらいだろうか?