Vai al contenuto

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")