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

  1. Sintaxis Básica: La estructura básica de una sentencia switch en Swift.
  2. Casos Múltiples: Cómo manejar múltiples valores en un solo caso.
  3. Rangos y Tuplas: Uso de rangos y tuplas en las sentencias switch.
  4. Casos con Condiciones: Uso de condiciones adicionales en los casos.
  5. 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 someValue no 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 someCharacter es 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 someNumber está en el rango de 0 a 5.
  • case 6...10: Este caso se ejecutará si someNumber está 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 x es igual a y.
  • case let (x, y) where x == -y: Este caso se ejecutará si x es 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 someValue no 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 grade está en el rango de 90 a 100.
  • case 80...89: Este caso se ejecutará si grade está en el rango de 80 a 89.
  • case 70...79: Este caso se ejecutará si grade está en el rango de 70 a 79.
  • case 60...69: Este caso se ejecutará si grade está en el rango de 60 a 69.
  • case 0...59: Este caso se ejecutará si grade está en el rango de 0 a 59.
  • default: Este caso se ejecutará si grade no 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.

© Copyright 2024. Todos los derechos reservados