我不知道为什么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
答案 0 :(得分:4)
表,函数,线程和(完整)userdata值是对象:变量实际上不包含这些值,只是对它们的引用。赋值,参数传递和函数返回总是操纵对这些值的引用;这些操作并不意味着任何形式的复制。
所以,当你指定:
local hitPattern = attacker
变量hitPattern
和attacker
都引用同一个表,当你修改一个时,另一个变化也是。