Меня полностью смущает Lua передача аргументов переменных и функций (значение или ссылка).
Смотрите код ниже:
local a = 9 -- since it define local, should not have func scope
local t = {4,6} -- since it 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
не в состоянии изменить переменную?
- Почему