我对 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
却不能修改变量 a?
function(x) x={} end
的行为是不同的。 - Michael Anderson