Курс 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, тож left == 6 зазнає невдачі.

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

Створення джанкшенів   |   Автопотоковість