Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Конкурентное программирование / Джанкшены
Автопоточность
Когда вы передаёте джанкшен туда, где ожидается одно значение — в сравнение или в обычную функцию, — Raku незаметно применяет эту операцию к каждому значению за джанкшеном и снова собирает результаты в джанкшен. Это называется автопоточностью.
Например, прибавление к джанкшену прибавляет к каждому из его значений:
my $j = 1 | 2 | 3;
say $j + 10; # any(11, 12, 13)+ 10 применилось к 1, 2 и
3 по отдельности, дав новый джанкшен any —
any(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 тест по содержанию этой темы.
Навигация по курсу
← Тест — Джанкшены | Тест — Автопоточность →
💪 Или перейдите сразу к упражнениям этого
раздела.