level 1
众所周知,x=1可以给x赋值为1
但是假如我想写一个函数f(var,val),使得其实现var=val的功能,该怎么做呢?
例子:
x=0
print(x)
f(x,1)
print(x)
=>0
=>1
显然假如直接写
function f(var,val)
var=val
return var
end
是不行的,因为这样的话在运行时x会直接被计算为0,变成了0=1了……
谢谢大家!初学者ssfd
2019年01月15日 04点01分
1
level 12
函数的参数是形参,只是临时的,且只在函数中有效,出了范围就会释放
比如你给函数传参数 f(x,1),实际是给形参做了一次赋值操作, var = x val = 1
你传递给函数的并不是变量本身而是变量的值
想在函数中修改原变量的话,其他语言的指针可以做到,因为是通过变量的地址间接修改
lua中貌似只有表(table)的值是地址,所以表也可以做到
2019年01月23日 01点01分
7
顺便一说,返回值也是同样的道理,仍然是进行了赋值操作
2019年01月23日 01点01分
恩是的,我一个想法就是直接用表里面的key当“指针”来做
2019年01月23日 15点01分