【发布时间】:2016-12-02 23:22:13
【问题描述】:
我是来问你一个函数如何设置一个参数传递的变量:
y = 4
test(y)
function test(x)
x = 3
end
提前谢谢你。
【问题讨论】:
-
我很好奇你为什么需要这个?
-
你只需要进入 Lua 的不同思维模式(不仅仅是 Lua——每种语言都有自己的思维模式,即使某些语言有共同的做事“思想”)。 Lua 的方法是允许一个函数返回多个值,而这又可以用于通过简单地返回修改后的值来更新任何参数,并将其(从函数外部)重新分配给所需的变量。在我看来,这是一种“更清洁”的做事方式。您描述的方式(在许多语言中允许)实际上有点冒险,因为您可能不会期望隐式变量更改。
-
除了关于语言和函数设计的哲学观点之外,从技术上讲,您的前提是不正确的:您不是在传递变量,而是在传递从表达式派生的值。你的表达恰好很简单
y。然后在函数y内部是一个参数,因此是一个不同的局部变量。关于改变参数的值或任何“变量”的值有更多的哲学论据。 -
具有类 Pascal 语言背景的人可能习惯于使用 'var' 声明参数(实际上是指向实际变量的指针,但没有像 C 中那样显式使用指针语法),然后从函数内部对这些变量的任何更新都会更新函数中传递的原始变量。
标签: lua