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

时间:2014-05-21 09:49:04

标签: variables lua scope

我不知道为什么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

1 个答案:

答案 0 :(得分:4)

来自Lua 5.2 reference manual

  

表,函数,线程和(完整)userdata值是对象:变量实际上不包含这些值,只是对它们的引用。赋值,参数传递和函数返回总是操纵对这些值的引用;这些操作并不意味着任何形式的复制。

所以,当你指定:

local hitPattern = attacker

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