指定lua参数应该是副本还是引用

Con*_*501 0 lua reference function

我想知道是否有办法指定是否应复制或仅引用lua函数的参数.颜色是表示颜色的对象.

例如,使用此代码

function editColor(col)
    col.r = 0
    print(tostring(col.r))
end

color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
Run Code Online (Sandbox Code Playgroud)

使输出

255
0
0
Run Code Online (Sandbox Code Playgroud)

所以col是颜色的"参考",但是这段代码:

function editColor(col)
    col = Color(0, 0, 0)
    print(tostring(col.r))
end

color = Color(255, 0, 0)
print(tostring(color.r))
editColor(color)
print(tostring(color.r))
Run Code Online (Sandbox Code Playgroud)

使此输出

255
0
255
Run Code Online (Sandbox Code Playgroud)

所以这里的颜色被复制了.

有没有办法强制复制或引用参数?就像&C++中的运算符一样?

Ste*_*let 5

不,Lua中的参数总是按值(镜像)传递.但是,所有变量都是参考.在editColor的第二个示例中,您将覆盖变量col引用的内容,但它仅适用于该范围.你需要改变一些东西,也许不是传递一个变量来重新分配,让函数返回一些东西并在外面重新分配.祝好运.