Le mot clé guard en Swift 2.0

Cet article est libre d'accès pour tous grâce à la générosité des abonnés de Mindsers Blog qui soutiennent notre blog indépendant. Si vous appréciez le contenu que je propose, je vous invite à vous abonner dès aujourd'hui.

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 :

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 :

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 :

Join 100+ developers and entrepreneurs and get notified on every new content.

No spam ever. Unsubscribe in a single click at any time.

Si vous avez des questions ou des remarques/conseils, n'hésitez pas à laisser un commentaire plus bas ! Je serais ravis de vous lire. Et si vous aimez l'article, n'oubliez pas de le partager avec vos amis.