Как перебирать пары элементов в таблице в lua - PullRequest
3 голосов
/ 24 октября 2011

Как перебрать пары элементов таблицы в lua?Я хотел бы добиться свободного от побочных эффектов способа круговых и некруглых итераций пар вер.

I have table like this:
t = {1,2,3,4}

Desired output of non-circular iteration:
(1,2)
(2,3)
(3,4)

Desired output of circular iteration:
(1,2)
(2,3)
(3,4)
(4,1)

Ответы [ 3 ]

6 голосов
/ 25 октября 2011

Другое решение для круглого корпуса

   local n=#t
    for i=1,n do 
      print(t[i],t[i%n+1]) 
    end
4 голосов
/ 24 октября 2011

Вот круглая коробка

for i = 1, #t do 
  local a,b
  a = t[i]
  if i == #t then b = t[1] else b = t[i+1] end 
  print(a,b) 
end

Не круговой:

for i = 1, #t-1 do 
  print(t[i],t[i+1]) 
end

Для вывода на выходе любителя: print(string.format("(%d,%d)",x,y)

1 голос
/ 03 августа 2015

Как насчет отсутствия специального случая для обоих случаев?

function print_pair(x, y)
   local s = string.format("(%d, %d)", x, y)
   print(s)
end

function print_pairs(t)
   for i = 1, #t - 1 do
      print_pair(t[i], t[i + 1])
   end
end

function print_pairs_circular(t)
   print_pairs(t)
   print_pair(t[#t], t[1])
end
...