0Pricing
Swift Academy · Leçon

Optionnels

Optionnels

Optionnels est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 1. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 1 leçons au total.

Introduction

Bonjour,

Un optionnel sert à indiquer qu'une variable peut ne pas avoir de valeur.

Si une variable de type optionnel possède une valeur, celle-ci est déballée puis utilisée. Sinon, elle n'a pas de valeur.

Utilisation des optionnels pour de nombreux types dans Swift

On peut le comparer au pointeur nil d'Obj-C. Cependant, le pointeur nil n'est valide que pour les types objet.

Dans Swift, les optionnels ne sont pas utilisés uniquement pour les types objet, mais aussi pour les structures, les énumérations et les types simples.

var optionalVar: String?
// optionalVar is automatically set to nil]
/*
Since we define it as optional without
assigning a value, the variable 
automatically takes the value of nil.
*/

Le nil de Swift et celui d'Obj-C ne sont pas identiques

Le nil de Swift et celui d'Obj-C ne sont pas identiques.

Dans Obj-C, un pointeur nil indique l'absence de l'objet. Dans Swift, nil n'est pas un pointeur nil. Dans Swift, nil indique l'absence de données et peut être utilisé avec d'autres types, pas uniquement avec le type objet.

Déballage forcé

Les variables que nous définissons comme optionnelles peuvent être accessibles à l'aide de la méthode de déballage forcé.

L'opérateur d'exclamation permet de forcer le déballage du code, mais son utilisation n'est généralement pas recommandée.

Si les données référencées ne sont pas disponibles lors d'un déballage forcé, nous obtenons une erreur d'exécution.

let convertedNumber : Int? = 123
if convertedNumber != nil {
    print("convertedNumber has an integer value of \(convertedNumber!).")
}
// Prints "convertedNumber has an integer value of 123."

Accéder à un optionnel avec une liaison optionnelle

Accéder à un optionnel avec une liaison optionnelle

Avec le bloc if let, nous pouvons accéder à la valeur de la variable optionnelle en l'affectant à une constante ou à une variable.

Cette méthode est plus élégante que le déballage forcé.

var possibleNumber : String? = "10"

if let actualNumber = possibleNumber {
    print(actualNumber)
}

Exemple

if let firstNumber = Int("4"), let secondNumber = Int("42"), 
  firstNumber < secondNumber && secondNumber < 100 {
    print("\(firstNumber) < \(secondNumber) < 100")
}
// Prints "4 < 42 < 100"
/*
 If at least one of them is false,
 it will not be entered in the if blog.
*/

Optionnels implicitement déballés

Optionnels implicitement déballés

Dans certains cas, la valeur optionnelle est affectée lors de la première étape et, dans les étapes suivantes, elle ne peut absolument pas être nil.

Dans ce cas, au lieu d'utiliser l'optionnel (?), on l'exprime avec l'opérateur (!) pour indiquer qu'il n'est certainement pas nil. 

Cette définition est appelée « optionnels implicitement déballés ».

Implicitement déballé

Implicitement déballé

Ce concept est principalement utilisé lors de l'initialisation d'une classe.

Contrairement aux optionnels traditionnels, nous n'avons pas besoin de déballer les variables déclarées comme implicitement déballées.

let possibleString: String? = "An optional string."
 // requires an exclamation mark
let forcedString: String = possibleString!

let assumedString: String! = "An implicitly unwrapped optional string."
// no need for an exclamation mark
let implicitString: String = assumedString 

Exemple

Si nous affectons nil à des variables de ce type, nous obtenons des erreurs d'exécution.

Prenons un exemple

/*
We can use it during optional binding or we can check for nil.
So we use implicitly unwrapped optional 
in the same way we use classic optional.
*/

var assumedString: String! = nil

if let definiteString = assumedString {
    print(definiteString)
}
// Prints "An implicitly unwrapped optional string."

Avertissement

Si une variable peut avoir la valeur nil, n'utilisez pas un optionnel implicitement déballé.

Opérateur de coalescence de Nil

Opérateur de coalescence de Nil

Il facilite le déballage des types optionnels.

Voyons cela à l'aide d'un exemple.

let defaultColorName = "red"
 // defaults to nil
var userDefinedColorName: String?  

var colorNameToUse = userDefinedColorName ?? defaultColorName
/*
userDefinedColorName is nil, 
so colorNameToUse is set to the default of "red"
*/


// a != nil ? a! : b 
/*
We can think of it as a shortcut to the above expression.
A checks if a is nil, if a is not nil, it unwrap and eturn, 
otherwise it returns the default value, ie b.
*/

Félicitations

Félicitations 🎉

Le concept d'optionnel est l'une des fonctionnalités les plus importantes de Swift. En utilisant les optionnels, nous nous débarrassons des contrôles de Nil, écrivons un code plus élégant et rendons nos applications plus sûres.

À bientôt dans la prochaine leçon 🥳

Optionnels — illustration 12

Questions Fréquemment Posées

La leçon « Optionnels » est-elle gratuite ?

Oui — le texte complet de « Optionnels » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 1 leçons au total.

Qu'est-ce que j'apprendrai dans « Optionnels » ?

Optionnels Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 1.

Combien de temps prend la leçon « Optionnels » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

← Retour à Swift Academy