Цикл в lua должен изменять значения массива, но не - PullRequest
0 голосов
/ 22 июня 2019

Вот цикл:

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', если позиция переменной массива равна pair, и 'valuey', если это не так: array [i] - это позиция, и я добавляю 'valuex / y' к значению 'v', но в итоге ничего не происходит.

С другой стороны, этот код работает, и это то, что я пытаюсь добиться цикла:

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

Я действительно не могу понять, почему цикл не делает этого, но в то же время вы уже догадались, я новичок в lua и в программировании в целом, поэтому я бы признателен, если бы вы могли помочь мне. Спасибо.

1 Ответ

1 голос
/ 23 июня 2019

Предполагая, как вы утверждаете в комментарии, что 0x et. и др. на самом деле переменные, ваш код никогда не будет работать.

Переменные не являются значениями ; они переменные. Переменные хранят значений, но сами по себе они не являются значениями.

Когда вы создали свой массив, вы скопировали значения внутри этих переменных в массив. Эти записи массива изменены, но нет никакой связи между записями массива и тем, откуда они получили свои значения.

Если вы хотите манипулировать самими переменными, то они должны быть частью некоторой таблицы (возможно, глобальной таблицы), индексы массива должны быть именами строк этих значений, а ваша модифицирующая функция должна будет используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...