действительно изменить глобальный
ностью сбит с толку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
возможность изменить таблицу ещеmoda
не может изменить переменную?