GUARD¶
Cosa imparerò:
- Guard statement
- Utilizzare il guard per gestire gli opzionali
Per gestire al meglio i flussi di controllo possiamo utilizzare il guard.
guard condizione else {
// Codice che viene eseguito se la condizione è falsa
return
}
// Codice che viene eseguito se la condizione è vera
Nel caso la condizione non venga riscontrata il compilatore entrerà nell’else e grazie alla parola chiave return tutto il codice scritto dopo la parentesi graffa che chiude l’else non verrà eseguito. Il guard fa il contrario di quello che succede con un if statement.
func divide(_ number: Double, by divisor: Double) {
guard divisor != 0.0 else {
return
}
let result = number / divisor
print(result)
}
divide(9, by: 3)
Output
3.0
Nel capitolo precedente hai visto che si può utilizzare l’if-let e il guard-let per gestire la possibilità di avere un oggetto nullo.
Il guard-let ci permette di associare il valore all’interno di un optional ad una costante accessibile al di fuori delle parentesi graffe (al contrario dell’if-let, in cui l’oggetto esiste solo all’interno dell’if).
func saluta(nome: String?) -> String? {
guard let name = nome else { return nil }
return "Ciao \(name)"
}
let ciaoDean = saluta(nome: "Dean")
print(ciaoDean)
Output
Optional("Ciao Dean")