Две петли из таблиц на разных частотах в Луа - PullRequest
0 голосов
/ 23 мая 2018

Я строю цикл, который должен использовать разные частоты для перехода к следующему значению.Пример:

local color = {"Blue", "Green", "Red"}
local group = {1, 2, 3}

for i=1.3 do
  cmd(string.format('group %i ; store color %q ; clearall', group[i], color[j]))
end

Это должно привести к:

Group 1 Blue,
Group 1 Green,
Group 1 Red,
Group 2 Blue.......

Я не могу получить цикл в цикле, так как я не могу позволить группе таблиц двигаться вверх только один раз за2 циклаТакже использование двойных значений или дважды [i], похоже, не сработало.

Надеюсь, вы мне поможете.

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Более простая версия

for i,v in pairs(group) do
for k,c in pairs(color) do
print("Group " .. v .. " " .. c)
end
end

Очень просто, он выполняет итерацию по групповому массиву и цветному массиву одновременно и распечатывает каждое значение, каждый раз, когда он перебирает групповой массив, он перебирает все элементы вВ массиве цветов Lua встроена техника объединения строк, вам не нужно использовать библиотеку строк:)

0 голосов
/ 30 мая 2018

Другой способ, учитывая разницу между ' ' и " "

for i=1, #color do 
  for _, v in pairs(color) do
      print('group '..i..' ; store color "'..v..'" ; clearall')
  end
end
0 голосов
/ 23 мая 2018

Запустите цикл для девяти итераций (это количество комбинаций, которые вы делаете), и используйте math.floor для вычисления индексов:

local color = {"Blue", "Green", "Red"}
local group = {1, 2, 3}
for i=0, #color*#color-1 do
    local g = math.floor(i/3)
    local c = i-3*g
    print(string.format('group %i ; store color %q ; clearall', group[g+1], color[c+1]))
end

Демо.

...