Programación de Apps iOS para iPhone con Swift y SwiftUI - LaFactoríaApple

fallthrough

fallthrough cuando actua en una Instrucción switch lo que hace es transferir el control de nuestro programa de un case al siguiente elemento, que puede ser otro case o default.

Si una instrucción case contiene un fallthrough, entonces si ocurriera la correspondencia que se evalua, primero se ejecutaría el código de este case y después el código del case o default que se encuentra a continuación sin evaluarlo.

Veamos un ejemplo:

var puntuacion = 8
var calificacion = ""

switch puntuacion {
case 0..<5:
    calificacion = "Suspenso"
case 5..<7:
    calificacion = "Aprobado"
case 7..<8:
    calificacion = "Notable"
case 8..<9:
    calificacion = "Notable+"
    fallthrough
case 9...10:
    calificacion = "Sobresaliente"

default:
    calificacion = "Esa puntuación ni puede ser calificada"
}

print(calificacion)

El valor puntuacion = 8 tiene su correspondencia en el case 8..<9, por lo que se ejecuta calificacion = "Notable+", pero como este case tiene un fallthrough al final, entonces se ejecuta el siguiente case sin que se evalue ni se cumpla su condición, por lo que calificacion = "Sobresaliente".

Modificamos el ejemplo para que se aprecie con más claridad que se ejecutan los códigos incluidos en case 8..<9 y case 9...10.

var puntuacion = 8
var calificacion = ""

switch puntuacion {
case 0..<5:
    calificacion = "Suspenso"
case 5..<7:
    calificacion += "Aprobado"
case 7..<8:
    calificacion += "Notable"
case 8..<9:
    calificacion += "Notable+"
    fallthrough
case 9...10:
    calificacion += "Sobresaliente"

default:
    calificacion += "Esa puntuación ni puede ser calificada"
}

print(calificacion)

Se pueden encadenar tantos fallthrough como queramos

var puntuacion = 8
var calificacion = ""

switch puntuacion {
case 0..<5:
    calificacion = "Suspenso"
case 5..<7:
    calificacion += "Aprobado"
case 7..<8:
    calificacion += "Notable"
case 8..<9:
    calificacion += "Notable+"
    fallthrough
case 9...10:
    calificacion += "Sobresaliente"
    fallthrough
    
default:
    calificacion += "Esa puntuación ni puede ser calificada"
}

print(calificacion)

Ficheros Adjuntos

Más en esta Sección