Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Конкурентное программирование / Джанкшены / Создание джанкшенов
Тест — Джанкшены
Что выведет следующая программа?
say so 4 == all(2, 4, 6);| 0 | True |
| 1 | False |
| 0 | all(2, 4, 6) |
| 0 | 4 |
Джанкшен 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 не проходит.