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和编程的初学者,如果你能帮助我就太感激了。 谢谢。

点赞
用户734069
用户734069

假设,就像您在评论中所说的那样,0x等都是变量,那么您的代码永远不会起作用。

变量不是值; 它们是变量。变量存储值,但它们本身不是值。

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

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

array={"0x", "0y", "1x", "1y"} --存储变量的字符串名称。
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
2019-06-22 21:45:40