En Swift, las sentencias switch son una poderosa herramienta para controlar el flujo de tu programa. A diferencia de otros lenguajes de programación, las sentencias switch en Swift no requieren un break explícito para salir de un caso, lo que las hace más seguras y menos propensas a errores.
Conceptos Clave
- Sintaxis Básica: La estructura básica de una sentencia switchen Swift.
- Casos Múltiples: Cómo manejar múltiples valores en un solo caso.
- Rangos y Tuplas: Uso de rangos y tuplas en las sentencias switch.
- Casos con Condiciones: Uso de condiciones adicionales en los casos.
- Casos Exhaustivos: Asegurarse de que todos los posibles valores sean manejados.
Sintaxis Básica
La sintaxis básica de una sentencia switch en Swift es la siguiente:
let someValue = 3
switch someValue {
case 1:
    print("El valor es 1")
case 2:
    print("El valor es 2")
case 3:
    print("El valor es 3")
default:
    print("El valor no es 1, 2, ni 3")
}Explicación
- someValue: Es la variable que estamos evaluando.
- case 1,- case 2,- case 3: Son los diferentes casos que estamos comparando con- someValue.
- default: Es el caso por defecto que se ejecuta si- someValueno coincide con ninguno de los casos anteriores.
Casos Múltiples
Puedes manejar múltiples valores en un solo caso utilizando comas para separarlos:
let someCharacter: Character = "a"
switch someCharacter {
case "a", "e", "i", "o", "u":
    print("\(someCharacter) es una vocal")
default:
    print("\(someCharacter) no es una vocal")
}Explicación
- case "a", "e", "i", "o", "u": Este caso se ejecutará si- someCharacteres cualquiera de las vocales.
Rangos y Tuplas
Las sentencias switch en Swift también pueden manejar rangos y tuplas:
let someNumber = 7
switch someNumber {
case 0...5:
    print("\(someNumber) está entre 0 y 5")
case 6...10:
    print("\(someNumber) está entre 6 y 10")
default:
    print("\(someNumber) está fuera del rango de 0 a 10")
}Explicación
- case 0...5: Este caso se ejecutará si- someNumberestá en el rango de 0 a 5.
- case 6...10: Este caso se ejecutará si- someNumberestá en el rango de 6 a 10.
Casos con Condiciones
Puedes agregar condiciones adicionales a los casos utilizando la cláusula where:
let point = (1, -1)
switch point {
case let (x, y) where x == y:
    print("El punto (\(x), \(y)) está en la línea x == y")
case let (x, y) where x == -y:
    print("El punto (\(x), \(y)) está en la línea x == -y")
default:
    print("El punto (\(x), \(y)) está en algún otro lugar")
}Explicación
- case let (x, y) where x == y: Este caso se ejecutará si- xes igual a- y.
- case let (x, y) where x == -y: Este caso se ejecutará si- xes igual a- -y.
Casos Exhaustivos
En Swift, las sentencias switch deben ser exhaustivas, lo que significa que deben cubrir todos los posibles valores del tipo que están evaluando. Si no puedes cubrir todos los casos, debes incluir un caso default.
let someValue = 10
switch someValue {
case 1:
    print("El valor es 1")
case 2:
    print("El valor es 2")
default:
    print("El valor no es 1 ni 2")
}Explicación
- default: Este caso se ejecutará si- someValueno coincide con ninguno de los casos anteriores.
Ejercicio Práctico
Ejercicio
Escribe una sentencia switch que evalúe una variable grade y que imprima el rango de calificación correspondiente:
- 90...100: "A"
- 80...89: "B"
- 70...79: "C"
- 60...69: "D"
- 0...59: "F"
Solución
let grade = 85
switch grade {
case 90...100:
    print("A")
case 80...89:
    print("B")
case 70...79:
    print("C")
case 60...69:
    print("D")
case 0...59:
    print("F")
default:
    print("Calificación inválida")
}Explicación
- case 90...100: Este caso se ejecutará si- gradeestá en el rango de 90 a 100.
- case 80...89: Este caso se ejecutará si- gradeestá en el rango de 80 a 89.
- case 70...79: Este caso se ejecutará si- gradeestá en el rango de 70 a 79.
- case 60...69: Este caso se ejecutará si- gradeestá en el rango de 60 a 69.
- case 0...59: Este caso se ejecutará si- gradeestá en el rango de 0 a 59.
- default: Este caso se ejecutará si- gradeno coincide con ninguno de los casos anteriores.
Conclusión
Las sentencias switch en Swift son una herramienta versátil y poderosa para controlar el flujo de tu programa. Asegúrate de que tus sentencias switch sean exhaustivas y aprovecha las características avanzadas como rangos, tuplas y condiciones adicionales para escribir código más claro y eficiente. Con la práctica, te sentirás más cómodo utilizando switch en tus proyectos de Swift.
Curso de Programación en Swift
Módulo 1: Introducción a Swift
- Introducción a Swift
- Configuración del Entorno de Desarrollo
- Tu Primer Programa en Swift
- Sintaxis y Estructura Básica
- Variables y Constantes
- Tipos de Datos
Módulo 2: Control de Flujo
Módulo 3: Funciones y Closures
- Definición y Llamada de Funciones
- Parámetros de Función y Valores de Retorno
- Closures
- Funciones de Orden Superior
Módulo 4: Programación Orientada a Objetos
Módulo 5: Swift Avanzado
Módulo 6: Swift y Desarrollo de iOS
- Introducción al Desarrollo de iOS
- Fundamentos de UIKit
- Storyboards y Interface Builder
- Redes en Swift
- Core Data
- Fundamentos de SwiftUI
