Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Конкурентное программирование / Джанкшены

Автопоточность

Когда вы передаёте джанкшен туда, где ожидается одно значение — в сравнение или в обычную функцию, — Raku незаметно применяет эту операцию к каждому значению за джанкшеном и снова собирает результаты в джанкшен. Это называется автопоточностью.

Например, прибавление к джанкшену прибавляет к каждому из его значений:

my $j = 1 | 2 | 3;
say $j + 10; # any(11, 12, 13)

+ 10 применилось к 1, 2 и 3 по отдельности, дав новый джанкшен anyany(11, 12, 13).

В сравнении объединённый результат схлопывается в одно логическое значение согласно виду джанкшена:

say so all(3, 7, 2) > 0;  # True  — каждое значение положительно
say so all(3, -1, 2) > 0; # False — не все положительны
say so none(1, 2, 3) == 5; # True — ни одно из них не равно 5

Автопоточность и делает джанкшены такими лаконичными: одно сравнение проверяет много значений. Концептуально проверки независимы, поэтому Raku волен выполнять их параллельно, — вот почему джанкшены естественно оказались в наборе средств для конкурентности.

Практика

Пройдите 1 тест по содержанию этой темы.

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

Тест — Джанкшены   |   Тест — Автопоточность


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