Control de flujo en Swift: if, guard, switch exhaustivo, for-in y where

El switch cubre todos los casos posibles o incluye default. Sin fall-through implícito. Admite rangos, tuplas y bindings:

let puntuacion = 73
switch puntuacion {
case 90...100: print("Sobresaliente")
case 70..<90:  print("Notable")
case 50..<70:  print("Aprobado")
default:       print("Suspenso")
}
// Notable

// Tuplas en switch
let punto = (0, 1)
switch punto {
case (0, 0):          print("Origen")
case (_, 0):          print("Eje X")
case (0, _):          print("Eje Y")
case let (x, y):      print("((x), (y))")
}
// Eje Y

guard: salida temprana

guard evalúa una condición y sale del scope si no se cumple. El código resultante es más plano y legible que anidar ifs:

func procesar(nombre: String?) {
    guard let n = nombre, !n.isEmpty else {
        print("Nombre inválido"); return
    }
    print("Procesando: (n)")
}

procesar(nombre: nil)    // Nombre inválido
procesar(nombre: "Ana")  // Procesando: Ana

for-in con where, while y repeat-while

for i in 1...10 where i.isMultiple(of: 3) {
    print(i)  // 3, 6, 9
}

var n = 1
while n < 100 { n *= 2 }
print(n)  // 128

var intentos = 0
repeat { intentos += 1 } while intentos < 3
print(intentos)  // 3

Etiquetas de bucle

exterior: for i in 1...3 {
    for j in 1...3 {
        if i == 2 && j == 2 { break exterior }
        print("(i),(j)", terminator: " ")
    }
}
// 1,1 1,2 1,3 2,1

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP