Switch con rangos
Parte de la sección Fundamentos del Journey de Swift de Coddy — lección 30 de 86.
Las sentencias switch se vuelven aún más potentes cuando utilizas rangos en lugar de valores individuales. Esto es perfecto para categorizar números en grupos, como convertir una puntuación en una calificación.
let score = 85
switch score {
case 90...100:
print("A")
case 80..<90:
print("B")
case 70..<80:
print("C")
case 60..<70:
print("D")
default:
print("F")
}El operador ... crea un rango cerrado que incluye ambos extremos, por lo que 90...100 coincide con 90, 91, hasta llegar al 100. El operador ..< crea un rango semiabierto que excluye el límite superior — 80..<90 coincide con los números del 80 al 89.
Swift comprueba cada caso en orden y ejecuta el primero que coincida. Dado que nuestra puntuación es 85, cae dentro de 80..<90, por lo que se imprime "B". Este enfoque es mucho más limpio que escribir múltiples condiciones else if con operadores de comparación.
Desafío
FácilEscribe una función getAgeCategory que toma age y devuelve la categoría de la etapa de la vida basada en rangos de edad.
Usa una sentencia switch con rangos para categorizar la edad en una de cinco etapas de la vida.
Condiciones:
0...2- devuelve"Infant"3...12- devuelve"Child"13...19- devuelve"Teenager"20...64- devuelve"Adult"65...120- devuelve"Senior"- Cualquier otro valor - devuelve
"Invalid age"
Parámetros:
age(Int): La edad de la persona
Devuelve: La categoría de la etapa de la vida como un String
Hoja de referencia
Las sentencias switch pueden usar rangos para coincidir con valores dentro de un intervalo específico:
let score = 85
switch score {
case 90...100:
print("A")
case 80..<90:
print("B")
case 70..<80:
print("C")
default:
print("F")
}El operador ... crea un rango cerrado que incluye ambos puntos finales (por ejemplo, 90...100 coincide del 90 al 100).
El operador ..< crea un rango semiabierto que excluye el límite superior (por ejemplo, 80..<90 coincide del 80 al 89).
Swift comprueba cada caso en orden y ejecuta el primero que coincida.
Pruébalo tú mismo
func getAgeCategory(age: Int) -> String {
// Escribe el código aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAsignación compuestaResumen - Matemáticas simplesOperadores de comparación7E/S Básica
Función PrintInterpolación de StringsEntrada ReadLineConversión de TiposRepaso - Hasta 120Repaso - Verdadero o Falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosResumen - Función SigmaResumen - Función de validaciónValores por defecto13Iterar sobre secuencias
Iterar sobre elementosEl método enumerateIterar sobre cadenas P1Iterar sobre cadenas P22Variables
Let vs VarAnotaciones de tiposNúmerosStringsBooleanosConvenciones de nomenclaturaResumen - Inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Opcionales
Qué son los opcionalesDesempaquetado con If LetGuard LetOperador de coalescencia nulaResumen - Desempaquetado seguro6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámica