Aprende a Programar Apps para iPhone con  Swift, SwiftUI y UIKit - lafactoriaapple

Múltiples Valores en los casos de una Instrucción switch

Hasta ahora hemos hecho uso de la Sintaxis Básica de la Instrucción swift, en la que evaluábamos un valor en cada uno de los case, aunque en los casos reales de Desarrollo de Aplicaciones Móviles para iPhone normalmente, para tener un Código más eficiente y elegante, evaluaremos varios valores en los case. La mejor forma de entenderlo es viendo un ejemplo:

var numeroMes = 3
var estacion = ""

switch numeroMes {
case 12,1,2:
    estacion = "Invierno"
case 3,4,5:
    estacion = "Primavera"
case 6,7,8:
    estacion = "Verano"
case 9,10,11:
    estacion = "Otoño"        

default:
    estacion = "Ese valor no corresponde a ninguna Estación del Año"

}

print(estacion)

Se pueden mezclar case con múltiples valores con otros que evalúan en un único valor:

var numeroMes = 3
var estacion = ""

switch numeroMes {
case 12,1,2:
    estacion = "Invierno"
case 3,4,5:
    estacion = "Primavera"
case 6,7,8:
    estacion = "Verano"
case 9:
    estacion = "Otoño"        
case 10:
    estacion = "Otoño"        
case 11:
    estacion = "Otoño"        
    
default:
    estacion = "Ese valor no corresponde a ninguna Estación del Año"

}

print(estacion)

No se deben repetir valores en los case

Veamos que pasa si uno o varios valores de los que queremos evaluar aparecen en varios case:

var numeroMes = 2
var temperatura = ""

switch numeroMes {
case 1,2:
    temperatura = "Frío"
case 2,3:
    temperatura = "Menos Frío"
case 8:
    temperatura = "Calor"    

default:
    temperatura = "Ese valor no puede ser evaluado"

}

print(temperatura)

El valor 2 está siendo evaluado en dos case por lo que obtenemos el siguiente mensaje de Advertencia, que si bien permite que nuestro programa se siga ejecutando, nos avisa de esta "incoherencia". En esta circunstancia se ejecutará el primero de los case que incluya el valor duplicado:

Lo mismo ocurre cuando tenemos case que evalúan un único valor:

var numeroMes = 2
var temperatura = ""

switch numeroMes {
case 1:
    temperatura = "Frío"
case 2:
    temperatura = "Frío"
case 2:
    temperatura = "Frío"
case 3:
    temperatura = "Frío"    
case 8:
    temperatura = "Calor"    

default:
    temperatura = "Ese valor no puede ser evaluado"

}

print(temperatura)

En este ejemplo volvemos a repetir el valor 2, el cual está siendo evaluado en dos case por lo que obtenemos el mismo mensaje de Advertencia:

Ficheros Adjuntos

Más en esta Sección