Курс языка программирования Raku / Продвинутый уровень / Подпрограммы / Мультиметоды

Тест — Диспетчеризация с where

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

multi sub f(Int $n where $n %% 2) { say 'even' }
multi sub f(Int $n)               { say 'odd' }

f(4);
1even
0odd
0both
0nothing

4 удовлетворяет условию where $n %% 2, поэтому выбирается более конкретный кандидат и печатается even. Кандидат с простым Int является перехватчиком для всего, что не прошло условие.

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

Решение: Классификация размера   |   Подробнее о MAIN