lua中的循环应该修改数组的值,但不会

时间:2019-06-22 20:41:32

标签: arrays lua

这是循环:

array={0x, 0y, 1x, 1y}
for i, v in ipairs(array) do
    if (i%2)==0 then
        array[i]=v+valuex
    else
        array[i]=v+valuey
    end
end

我认为应该做的是遍历数组,如果数组变量的位置是对,则添加变量'valuex',如果不是,则添加'valuey':array [i]是位置,我添加将'valuex / y'更改为'v'值,但最终没有任何结果。

另一方面,此代码有效,这是我要使循环实现的目的:

0x=0x+valuex
1x=1x+valuex
0y=0y+valuey
1y=1y+valuey

我真的无法理解循环无法执行此操作的原因,但是与此同时,您已经猜到了,我是lua和一般编程的初学者,所以我想谢谢你能帮我一下。 谢谢。

1 个答案:

答案 0 :(得分:1)

假设您在评论中声明0x等。等实际上是变量,您的代码永远不会正常工作。

变量不是值;他们是变量。变量 store 值,但它们本身不是值。

创建数组时,将这些变量内部的值复制到了数组中。这些数组条目已被修改,但是数组条目与它们从中获取值的位置之间没有关联。

如果要自己操作变量,则它们必须是某些表(也许是全局表)的一部分,数组索引必须是这些值的字符串名称,并且修改函数必须使用v从表中访问变量。假设您的“ 0x”变量是全局表中的条目,则代码将如下所示:

array={"0x", "0y", "1x", "1y"} --Storing string names of the variables.
for i, v in ipairs(array) do
    if (i % 2) == 0 then
        _G[v] = _G[v] + valuex
    else
        _G[v] = _G[v] + valuey
    end
end