Guard Let
Parte de la sección Fundamentos del Journey de Swift de Coddy. Lección 13 de 86.
Mientras if let desenvuelve un opcional y ejecuta el código cuando existe un valor, guard let adopta el enfoque opuesto. Sale anticipadamente cuando falta un valor. Esto resulta especialmente útil dentro de funciones en las que quieres gestionar primero el caso «malo» y mantener limpia la lógica principal.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // ¡Hola, Taylor!
greet(name: nil) // No se proporcionó ningún nombreLa instrucción guard let comprueba si name tiene un valor. Si no lo tiene, se ejecuta el bloque else y la función termina con return. Si el opcional contiene un valor, se desempaqueta en unwrappedName, y aquí está la diferencia clave con if let: la variable desempaquetada sigue estando disponible durante el resto de la función, no solo dentro de un bloque.
Este patrón de «salida anticipada» mantiene tu código legible al gestionar los casos de error de antemano, de modo que la lógica principal no quede anidada dentro de varias instrucciones if.
Desafío
FácilEscribe una función validateAge que acepte un parámetro opcional age y use guard let para desempaquetarlo de forma segura.
Si la edad es nil, devuelve "Invalid age". De lo contrario, devuelve "Age: [value]", donde [value] es la edad desempaquetada.
Parámetros:
age(Int?): Un entero opcional que representa la edad de una persona
Devuelve: Una cadena, ya sea "Invalid age" si la entrada es nil, o "Age: [value]" con el valor desempaquetado.
Ejemplo: Si age es 25, devuelve "Age: 25". Si age es nil, devuelve "Invalid age".
Pruébalo tú mismo
func validateAge(age: Int) -> String {
// Escribe el código aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores, parte 1
Operadores aritméticosOperador móduloAsignación compuestaRepaso: matemáticas simplesOperadores de comparación7Entrada/salida básica
Función printInterpolación de cadenasEntrada con ReadLineConversión de tiposRepaso: hasta 120Repaso: verdadero o falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosRepaso: función SigmaRepaso: función de validaciónValores predeterminados13Iteración sobre secuencias
Iteración sobre elementosEl método enumeradoIteración sobre cadenas P1Iteración sobre cadenas P22Variables
Let vs VarAnotaciones de tipoNúmerosCadenaBooleanoConvenciones de nomenclaturaRepaso: inicializar variables5Operadores, parte 2
Operadores lógicos, parte 1Operadores lógicos, parte 2Repaso: lógica simpleOperadores lógicos, parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtención de datos11FizzBuzz con un giro
Descripción del juegoLa función FizzBuzz3Opcionales
Qué son los opcionalesDesenvolver con If LetGuard LetOperador de coalescencia nilRepaso: desenvoltura segura6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámicaPractica por tu cuenta: Playground de Swift