La condition IF en Swift est utilisée pour exécuter un bloc de code si une condition donnée est vraie (true). Elle est écrite de la manière suivante :
if condition {
// code à exécuter si la condition est vraie
}
La condition if
La condition peut être n'importe quelle expression qui renvoie un booléen (true ou false). Par exemple :
let age = 25
if age >= 18 {
print("Bienvenue au bar")
}
Dans cet exemple, si la variable age est supérieure ou égale à 21, le message "Bienvenue au bar" sera affiché.
Il est également possible d'utiliser l'opérateur de comparaison == pour tester l'égalité entre deux valeurs :
let couleur = "rouge"
if couleur == "rouge" {
print("La couleur est rouge")
}
Il est possible de combiner plusieurs conditions en utilisant les opérateurs logiques && (ET) et || (OU) :
let heure = 12
let jour = "vendredi"
if (heure >= 9 && heure < 17) || jour == "samedi" {
print("Le magasin est ouvert")
}
Cet exemple vérifie si l'heure est comprise entre 9h et 17h (hors compris) OU si c'est un samedi. Si l'une de ces conditions est vraie, le message "Le magasin est ouvert" sera affiché.
On utilise l'instruction if pour évaluer des conditions simples avec seulement quelques résultats possibles. L'instruction switch est mieux adaptée à des conditions plus complexes avec plusieurs permutations possibles et plus utiles dans les situations où la correspondance de modèle peut aider à sélectionner une branche de code appropriée à exécuter.
L'instruction if exprime une condition. L'exemple ci-dessous se traduit :
"Si la valeur de la variable temperatureInFahrenheit est inférieure ou égale à 32 exécuter le code qui suit entre les accolades, sinon si elle est supérieur à 86 exécuter le code qui suit entre les accolades et sinon (else) exécuter le code qui suit entre les accolades".
if temperatureInFahrenheit <= 32 {
// Actions Exécutées si True
} else if temperatureInFahrenheit >= 86 {
// True si temperatureInFahrenheit >= 86
} else {
// False alors temperatureInFahrenheit entre 33 et 85
}
La condition if-else
La branche Else n'est pas obligatoire dans une condition if. Si la condition n'est pas vrai, alors les lignes de code entre les accolades sont simplement ignorées et bien sur non exécutées.
if temperatureInFahrenheit <= 32 {
// Actions Exécutées si True
}
L'instruction ELSE permet d'exécuter un bloc de code si la condition n'est pas remplie :
let age = 15
if age >= 18 {
print("Vous êtes majeur")
} else {
print("Vous êtes mineur")
}
// Cela va afficher : "Vous êtes mineur"
Dans cet exemple, si la variable age est supérieure ou égale à 18, le message "Vous êtes majeur" sera affiché, sinon le message "Vous êtes mineur" sera affiché.
Il est possible d'utiliser plusieurs conditions en utilisant l'instruction ELSE IF pour vérifier plusieurs conditions :
let note = 16
if note < 10 {
print("Insuffisant")
} else if note < 12 {
print("Passable")
} else if note < 14 {
print("Assez bien")
} else if note < 16 {
print("Bien")
} else {
print("Très bien")
}
// Cela va afficher "Très bien"
Dans cet exemple, on vérifie dans l'ordre les différentes conditions pour afficher le message correspondant. Il est important de noter que dès qu'une condition est remplie, les instructions suivantes ne sont pas exécuté.
La condition guard
Une instruction guard est utilisée pour transférer le contrôle du programme hors d'une portée si une ou plusieurs conditions ne sont pas remplies. La clause Else est obligatoire lors d'une condition guard.
L'instruction guard en Swift est utilisée pour éviter les valeurs nulles (ou optionnelles) dans un bloc de code. Elle permet de vérifier si une condition est vraie, et si ce n'est pas le cas, de quitter immédiatement le bloc de code en cours d'exécution. Cela peut être utile pour gérer les erreurs ou les cas d'utilisation où une valeur doit être présente pour que le code puisse continuer à s'exécuter.
La syntaxe de base de l'instruction guard est la suivante :
guard condition else {
// code à exécuter si la condition est fausse
return
}
La condition peut être n'importe quelle expression qui renvoie un booléen. Par exemple :
func authenticate(username: String?, password: String?) {
guard let username = username, let password = password else {
print("Veuillez entrer un nom d'utilisateur et un mot de passe valides.")
return
}
// code pour l'authentification
}
Dans cet exemple, si username ou password est nil, le message "Veuillez entrer un nom d'utilisateur et un mot de passe valides." sera affiché et la fonction quittera. Sinon, le code pour l'authentification sera exécuté.
Il est également possible de définir une constante ou une variable à partir de la valeur optionnelle pour l'utiliser dans le bloc de code :
func calculateSum(numbers: [Int]?) -> Int {
guard let numbers = numbers, !numbers.isEmpty else {
return 0
}
return numbers.reduce(0, +)
}
Dans cet exemple, si numbers est nil ou vide, la fonction retourne 0 sans exécuter le reste du code. Sinon, elle utilise la valeur déballée de numbers pour calculer la somme des éléments du tableau.
Il est également possible d'utiliser guard let avec des structures de contrôle plus complexes pour vérifier plusieurs conditions.
func printGrade(score: Int) {
guard score >= 90 else {
print("Désolé, vous avez échoué.")
return
}
guard score > 100 else {
print("Score impossible.")
return
}
print("Félicitations, vous avez réussi avec un score de \(score).")
}
Dans cet exemple, si le score est inférieur à 90, le message "Désolé, vous avez échoué." sera affiché et la fonction quittera. Si le score est supérieur à 100, le message "Score impossible." sera affiché.