Оператор zip объединяет несколько списков в один, последовательно отбирая из каждого из них сначала первые элементы, затем вторые и так далее.
Например, если один массив содержит прописные буквы A и B, а другой — строчные a, b, результирующий массив будет содержать последовательность A, a, B, b.
Каждый из приведенных ниже трех вариантов выведет одну и ту же строку: 12345678.
my @odd = (1, 3, 5, 7);
my @even = (2, 4, 6, 8);
my @both = zip @odd, @even;
print @both;
my @odd = (1, 3, 5, 7);
my @even = (2, 4, 6, 8);
for zip @odd, @even
{
print;
}
my @odd = (1, 3, 5, 7);
my @even = (2, 4, 6, 8);
for zip @odd, @even -> ($a, $b)
{
print $a ~ $b;
}
Сравните последний пример с кодом из заметки «Оператор for — 7. Точка с запятой», где массивы и переменные цикла разделены точкой с запятой. Однако, это не работает с компилятором Pugs.