Curso de Raku / Avanzado / Subrutinas / Despacho múltiple / Exercises / Clasificar el tamaño
Solución: Clasificar el tamaño
Aquí hay una posible solución para la tarea.
Código
multi sub size(Int $n where $n.abs < 10) { 'small' }
multi sub size(Int $n where $n.abs < 100) { 'medium' }
multi sub size(Int $n) { 'large' }
say size(7);
say size(30);
say size(-250);🦋 Puedes encontrar el código fuente en el archivo classify-sign.raku.
Salida
small
medium
largeComentarios
Los tres candidatos toman un único
Int, así que sin las cláusulaswhereentrarían en conflicto. Las condiciones en los dos primeros los hacen distintos, y el tercero es el comodín.Las cláusulas
whereprueban$n.abs, así que solo la magnitud decide el resultado y el signo se ignora.size(7)coincide con el primer candidato (small), mientras quesize(-250)tiene un valor absoluto de250, que no cumple ninguna de las dos condiciones y cae al comodín (large).Los candidatos se prueban del más específico al más general — exactamente en el orden en que están escritos aquí.