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

Создание джанкшенов

Проще всего построить джанкшен джанктивными операторами. Оператор | создаёт джанкшен any:

my $j = 1 | 2 | 3;
say $j; # any(1, 2, 3)

Значение $j означает «1, или 2, или 3». Джанкшены бывают четырёх видов, у каждого есть оператор и соответствующая функция:

  • any( … ) или a | b — истинно, если совпадает любое значение
  • all( … ) или a & b — истинно, если совпадают все значения
  • one( … ) или a ^ b — истинно, если совпадает ровно одно значение
  • none( … ) — истинно, если ни одно значение не совпадает (это единственный вид без операторной формы — используйте функцию)

Функциональные формы удобны со списком:

say all(3, 7, 2);  # all(3, 7, 2)
say none(1, 2, 3); # none(1, 2, 3)

Больше всего пользы от джанкшена в сравнении. Вопрос, равно ли число джанкшену any, проверяет его сразу со всеми значениями:

say so 2 == any(1, 2, 3); # True
say so 5 == any(1, 2, 3); # False

Операторная форма читается не менее естественно: 1 | 2 | 3 — это в точности тот же джанкшен any:

say so 2 == 1 | 2 | 3; # True
say so 5 == 1 | 2 | 3; # False

so превращает джанктивный результат в обычное логическое значение. Следующая тема рассматривает, что при этом происходит за кулисами.

Практика

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

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

Джанкшены   |   Тест — Джанкшены


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