> ## Content Index
> Fetch the complete content index at: https://mindsers.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Le mot clé guard en Swift 2.0
- URL: https://mindsers.blog/fr/post/le-mot-cle-guard-en-swift-2-0/
- Published: 2016-03-03T07:17:52.000Z
- Updated: 2021-08-22T20:01:12.000Z
- Author: Nathanaël Cherrier
- Tags: swift, coding-tech, ios, osx, #lang-fr

L'arrivée de Swift en 2013 a apporté un vent d'air frais dans le monde du développement Apple (iOS, OS X, etc..) ~~et Linux~~.

Par exemple, lorsque je veux tester qu'une variable n'est pas nulle pour pouvoir travailler avec, Swift me permet de coder ainsi :

```swift
func exemple() {
    var response: NSData?

    if let data = response {
        data.writeToFile("path/", atomically: true)
    }
}

```

Si `response` est nulle on ne rentre pas dans le scope du `if`, si `response` n'est pas nulle la constante `data` est créée avec la valeur de `response` et je travaille sur `data`.

## Le guard statement

Swift 2.0 nous apporte **une nouvelle syntaxe pour faire la même chose** : il s'agit du mot-clé `guard`.

Le même exemple avec `guard` :

```swift
func exemple() {
    var response: NSData?

    guard let data = response else {
        return
    }

    data.writeToFile("path/", atomically: true)
}

```

Ce code fait donc exactement la même chose. Alors pourquoi une nouvelle syntaxe ?

## À quoi ça sert ?

Même si les deux codes ont la même finalité, vous vous doutez bien que tout n'est pas exactement pareil.

Les plus observateurs d'entre vous l'ont sûrement déjà remarqué la différence entre `if let` et `guard else` est la propagation de la constante créée.

Avec `if let` data n'existe que dans le scope du `if` alors que pour `guard` data existe dans tout le scope de la fonction. Ce nouveau **statement** prend tout son sens dans les cas où la majorité du code de ma fonction dépend de l'existence d'une variable.

Au lieu de mettre tout le code dans le `if let` et ainsi de suite pour les inclusions de tests d'existence, je teste ma variable et je travaille à la racine de ma fonction **ce qui me permet d'avoir un code bien plus lisible et du coup simple à maintenir**.

Pour aller plus loin :

- [Utiliser les sélecteurs en Swift](https://mindsers.blog/fr/post/utiliser-les-selecteurs-en-swift/)
- [Swift : les closures](https://mindsers.blog/fr/post/swift-les-closures/)