Guard let
Fa parte della sezione Fondamenti del percorso Swift di Coddy. Lezione 13 di 86.
Mentre if let scarta un valore opzionale ed esegue il codice quando è presente un valore, guard let adotta l’approccio opposto. Esce in anticipo quando manca un valore. È particolarmente utile all’interno delle funzioni quando vuoi gestire prima il caso «negativo» e mantenere pulita la logica principale.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // Ciao, Taylor!
greet(name: nil) // Nessun nome fornitoL'istruzione guard let verifica se name ha un valore. Se non ne ha, viene eseguito il blocco else e la funzione termina con return. Se l'opzionale contiene un valore, questo viene estratto in unwrappedName, ed ecco la differenza fondamentale rispetto a if let: la variabile estratta resta disponibile per il resto della funzione, non solo all'interno di un blocco.
Questo schema di «uscita anticipata» mantiene il codice leggibile gestendo subito i casi di errore, così la logica principale non è annidata in più istruzioni if.
Sfida
FacileScrivi una funzione validateAge che accetta un parametro age facoltativo e usa guard let per estrarne il valore in modo sicuro.
Se l'età è nil, restituisci "Invalid age". Altrimenti, restituisci "Age: [value]", dove [value] è l'età estratta.
Parametri:
age(Int?): un intero facoltativo che rappresenta l'età di una persona
Valore restituito: una stringa: "Invalid age" se l'input è nil, oppure "Age: [value]" con il valore estratto.
Esempio: se age è 25, restituisci "Age: 25". Se age è nil, restituisci "Invalid age".
Provalo tu
func validateAge(age: Int) -> String {
// Scrivi il codice qui
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori – Parte 1
Operatori aritmeticiOperatore moduloAssegnazione compostaRiepilogo - Matematica sempliceOperatori di confronto7I/O di base
Funzione printInterpolazione di stringheInput con ReadLineConversione di tipoRipasso - Fino a 120Ripasso - Vero o falso10Funzioni
Dichiarare una funzioneParametri e argomentiValori restituitiEtichette degli argomentiRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti13Iterare sulle sequenze
Iterare sugli elementiIl metodo enumerateIterare sulle stringhe P1Iterare sulle stringhe P22Variabili
Let vs VarAnnotazioni di tipoNumeriStringaBooleanoConvenzioni di denominazioneRiepilogo - Inizializzare le variabili5Operatori Parte 2
Operatori logici Parte 1Operatori logici Parte 2Riepilogo - Logica sempliceOperatori logici Parte 3Operatore ternario8Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire i dati11FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz3Valori opzionali
Cosa sono i valori opzionaliEstrazione del valore con if letGuard letOperatore di coalescenza nilRiepilogo - Estrazione sicura del valore6Decisioni
Istruzione ifIf - ElseRipasso - Calcolatrice sempliceIstruzione switchSwitch con intervalli9Cicli
Ciclo for-inCiclo whileCiclo repeat-whileBreakContinueRipasso - FattorialeIntervalli nei cicliCiclo annidatoRipasso - Input dinamicoEsercitati da solo: Playground Swift