Курс языка программирования Raku / Продвинутый уровень / Операторы / Метаоператоры

Метаоператоры zip

Метаоператор zip Z берёт два (или больше) списка и объединяет их элементы попарно по позициям:

say (1, 2, 3) Z (4, 5, 6); # ((1 4) (2 5) (3 6))

Результат — список групп: первые элементы всех списков вместе, затем вторые и так далее.

Ещё интереснее то, что Z можно совместить с оператором, чтобы подействовать на каждую пару. Например, Z+ складывает элементы попозиционно:

say (1, 2, 3) Z+ (10, 20, 30); # (11 22 33)

Это метаоператор zip, обёрнутый вокруг оператора +: он вычисляет 1 + 10, 2 + 20 и 3 + 30. Точно так же Z* перемножает соответствующие элементы:

say (1, 2, 3) Z* (10, 20, 30); # (10 40 90)

А Z~ соединяет соответствующие строки:

say <a b c> Z~ <1 2 3>; # (a1 b2 c3)

Навигация по курсу

Тест — Свёртка   |   Перекрёстные, гипер- и отрицающие


💪 Или перейдите сразу к упражнениям этого раздела.