Курс языка программирования Raku / Продвинутый уровень / Подпрограммы / Мультиметоды
Тест — Диспетчеризация с
where
Что напечатает следующая программа?
multi sub f(Int $n where $n %% 2) { say 'even' }
multi sub f(Int $n) { say 'odd' }
f(4);| 1 | even |
| 0 | odd |
| 0 | both |
| 0 | nothing |
4 удовлетворяет условию where $n %% 2,
поэтому выбирается более конкретный кандидат и печатается
even. Кандидат с простым Int является
перехватчиком для всего, что не прошло условие.