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

Автопотоковість

Коли ви передаєте з’єднання туди, де очікується одне значення — у порівняння або у звичайну функцію, — Raku тихенько застосовує цю операцію до кожного значення за з’єднанням і зшиває результати назад у з’єднання. Це називають автопотоковістю (autothreading).

Наприклад, додавання до з’єднання додає до кожного з його значень:

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 тест за змістом цієї теми.

Навігація курсом

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


💪 Або перейдіть одразу до вправ цього розділу.