如果变量是一个变量,则无法更改函数中的变量

时间:2015-12-20 16:09:39

标签: function variables lua arguments

function bar(w)
    w = 1
end
a = 2
bar(a)
print(a) -- => 2

下一个是有效的,但它不是一个论点。

function test()
    a = 1
end
a = 2
test(a)
print(a) -- => 1

如何更改函数体中的变量是变量是参数吗?

1 个答案:

答案 0 :(得分:3)

正如数字Veer在评论中指出的,lua值通常按值传递。所以你不能这样做。

然而,表格是通过引用传递的。 (有关此内容的更多讨论,请参阅lua手册中的2.2 Values and Types部分。)

因此,如果您将表传递给该函数,则可以修改中的值。

function bar(tab)
    tab.w = 1
end
local t = {w = 2}
bar(t)
print(t.w) -- => 1