Curso de Raku / Avanzado / Control de flujo / given y
when / Exercises / Etapa de vida
según la edad
Solución: Etapa de vida según la edad
Aquí tienes una posible solución a la tarea.
Código
my $age = 30;
given $age {
when $_ < 0 { say 'invalid' }
when 0..12 { say 'child' }
when 13..19 { say 'teenager' }
when 20..64 { say 'adult' }
default { say 'senior' }
}🦋 Encuentra el programa en el archivo grade-the-score.raku.
Salida
adultComentarios
Esta solución mezcla dos tipos de
when. El primero es una condición,$_ < 0(donde$_es el topico establecido porgiven), que descarta las edades invalidas; el resto son rangos que agrupan las edades válidas en etapas.El orden importa. La comprobación de edad negativa va primero, así que se ejecuta antes de que se pruebe cualquier rango. El valor
30cae en20..64, por lo que el programa imprimeadult.El bloque
defaultcubre toda edad de 65 en adelante, que no esta capturada por ninguno de los rangos listados.
Podrías darle la vuelta y dejar que default capture la
entrada invalida en su lugar. Lista cada etapa reconocida —
incluyendo senior como la condición
$_ >= 65 — y trata cualquier sobrante (como una edad
negativa) como inválido:
given $age {
when 0..12 { say 'child' }
when 13..19 { say 'teenager' }
when 20..64 { say 'adult' }
when $_ >= 65 { say 'senior' }
default { say 'invalid' }
}Aquí default es una rama genuina de “ninguno de los
anteriores”. Cual versión se lee mejor es cuestión de gusto: pon la
comprobación primero cuando el caso inválido es la excepción, o hazlo el
respaldo cuando las etapas válidas están todas claramente
enumeradas.