gpt4 book ai didi

variables - 在 Lua 中控制变量范围;它正在改变两个 Vars

转载 作者:行者123 更新时间:2023-12-04 05:38:53 25 4
gpt4 key购买 nike

我不明白为什么 lua 会改变这两个变量,尽管我的理解是函数之外的那个不应该被触及。

这是怎么回事,我该如何保持“攻击者”变量不变?

谢谢!

local attacker = { 0,-1 }

local function test()

local hitPattern = attacker

print( "----------->> attacker", # attacker )

--Set Loop Method
if hitPattern[ # hitPattern ] == -1 then
hitPattern[ # hitPattern ] = nil
end

print( "----->> attacker", # attacker )

end
test()
----------->> attacker 2
----->> attacker 1

最佳答案

来自 Lua 5.2 reference manual :

Tables, functions, threads, and (full) userdata values are objects: variables do not actually contain these values, only references to them. Assignment, parameter passing, and function returns always manipulate references to such values; these operations do not imply any kind of copy.

因此,当您分配时:

local hitPattern = attacker

变量hitPatternattacker都引用同一个表,当你修改一个时,另一个也会改变。

关于variables - 在 Lua 中控制变量范围;它正在改变两个 Vars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com