Code: Select all
get_name = function()
print("Entered function "..debug.getinfo(2).name)
end
a = {
test_a = function(x) get_name() print(x) end,
test_b = function(x) get_name() print(2*x) end,
}
Code: Select all
-- As expected:
> a.test_a(123)
Entered function test_a
123
-- As expected:
> a["test_a"](123)
Entered function test_a
123
-- Unexpected:
> f = "test_a"
> a[f](123)
Entered function ?
123
Code: Select all
> for f_name, f in pairs(a) do a[f_name](123) end
Entered function ?
123
Entered function ?
246
Code: Select all
> x = "a"
> a["test_"..x](123)
Entered function ?
123