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

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

Что выведет следующая программа?

say so 4 == all(2, 4, 6);
0True
1False
0all(2, 4, 6)
04

Джанкшен all истинен, только когда совпадает каждое значение. Проверка 4 == all(2, 4, 6) спрашивает, равно ли 4 и 2, и 4, и 6; это не так, поэтому результат — False.

Любопытно, что могло бы сделать его True? Левая часть должна была бы равняться сразу и 2, и 4, и 6. Ни одно отдельное число так не может — а вот джанкшен слева может: подойдёт джанкшен any, включающий все три этих значения, ведь тогда каждое из сравнений удастся. Стороны не обязаны быть одного размера: слева могут быть и лишние значения:

say so any(2, 4, 6, 8) == all(2, 4, 6); # True
say so any(2, 4)       == all(2, 4, 6); # False

Первое даёт True, потому что any(2, 4, 6, 8) всё равно равен и 2, и 4, и 6 (лишняя 8 безвредна). Второе даёт False, потому что слева нет 6, и проверка левое == 6 не проходит.

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

Создание джанкшенов   |   Автопоточность