Schéma explicatif du fonctionnement des types optionnels

Le type optionnel

Le type optionnel, aussi appelé optionnelles, option ou en anglais optionals représente l’encapsulation d’une valeur facultative; c’est à dire que c’une « boite » qui contient ou non une valeur. Comme un dessin vaut mieux qu’un long discours voici un schéma explicatif :

Schéma explicatif du fonctionnement des types optionnels

Un type optionnel est une « boite » qui permet de faire abstraction de son contenu. C’est quand on l’ouvre que l’on découvre si il y avait quelque chose dedans ou non.

Le type optionnel permet de traiter de façon élégante les cas de fonction ou de variable pour lesquels aucun résultat n’existe. En effet une variable ou une valeur de retour optionnelle n’est jamais nulle et nous « oblige » à tester son contenu, ce qui permet d’éviter énormément d’erreur. Voici un exemple de code pour illustrer tout ça :

// Défini un dictionnaire prénom/âge
let ages: [String: Int] = ["anne": 19, "jean": 32, "pierre": 24]

// Récupère l'âge de mathieux
let ageMathieux: Int? = ages["mathieux"]

// Si la "boite" contient une valeur
if ageMathieux != nil {
  // On utilise ! pour "ouvrir" la boite
  print("Mathieux a \(ageMathieux!) ans")
}
else {
  print("L'âge de Mathieux n'est pas défini")
}

Enchainement d’option

Les optionnelles prennent tous leur sens lorsque l’on a besoin de chainer les appels de propriété, méthode ou de subscripts. Si l’option contient une valeur alors l’appel va réussir tandis que si l’option est nulle la valeur de retour sera nulle elle aussi. On peut chainer comme ça plusieurs appels en une seule fois, ce qui permet de réduire considérablement le niveau de if imbriqué à écrire. Voici un petit exemple d’enchainement d’option :

// Défini une liste de prénom
let prenoms: [String] = ["anne", "jean", "pierre"]

if let prenom = prenoms[10]?.uppercaseString {
  print("\(prenom)")
}
else {
  print("Aucun prénom en 11 ème position")
}

// Affiche "Aucun prénom en 11 ème position"

Fondamentalement, l’enchainement d’option retourne une option contenant la valeur de l’opération que vous faites. Cela simplifie la lecture du code et permet par la même occasion de réduire les erreurs possibles.

1 Etoile2 Etoiles3 Etoiles4 Etoiles5 Etoiles (7 votes, average: 4,71 out of 5)
Loading...

Aucun commentaire

Time limit is exhausted. Please reload CAPTCHA.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.