Меня совершенно сбивает с толку Lua область видимости переменных и передача аргументов функции (значение или ссылка).
См. Код ниже:
local a = 9 -- since it's define local, should not have func scope
local t = {4,6} -- since it's define local, should not have func scope
function moda(a)
a = 10 -- creates a global var?
end
function modt(t)
t[1] = 7 -- create a global var?
t[2] = 8
end
moda(a)
modt(t)
print(a) -- print 9 (function does not modify the parent variable)
print(t[1]..t[2]) -- print 78 (some how modt is modifying the parent t var)
Таким образом, это поведение полностью меня смущает.
Означает ли это, что переменные таблицы передаются функции ссылка, а не значение?
Как происходит создание глобальной переменной противоречит уже определенному локальная переменная?
modt
может
изменить таблицу пока не может мода
не может
чтобы изменить переменную?