Les opérateurs de plage Swift permettent de définir des intervalles de valeurs, que ce soit pour les nombres, les caractères ou les chaînes de caractères. Ces opérateurs sont particulièrement utiles pour les boucles et les conditions, car ils facilitent la compréhension du code en rendant les limites des intervalles explicites.
Opérateur de plage fermée
L'opérateur de plage fermée a...b définit une plage qui va de a à b et inclut les valeurs a et b. La valeur de a ne doit pas être supérieure à b.
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1 fois 5 vaut 5
// 2 fois 5 vaut 10
// 3 fois 5 vaut 15
// 4 fois 5 vaut 20
// 5 fois 5 vaut 25
Opérateur de plage semi-ouverte
L'opérateur de plage semi-ouverte a..<b définit une plage qui va de a à b, mais ne comprend pas b. On dit qu'il est à moitié ouvert car il contient sa première valeur, mais pas sa valeur finale.
Comme pour l'opérateur de plage fermée, la valeur de a ne doit pas être supérieure à b. Si la valeur de a est égale à b, la plage résultante sera vide.
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) est appelé \(names[i])")
}
// Person 1 est appelée Anna
// Person 2 est appelée Alex
// Person 3 est appelée Brian
// Person 4 est appelée Jack
Opérateur de plages unilatérales
L'opérateur de plage fermée est pour les plages qui continuent autant que possible dans une direction. Dans ces cas, vous pouvez omettre la valeur d'un côté de l'opérateur de plage. Ce type de plage est appelé plage unilatérale car l'opérateur a une valeur sur un seul côté :
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] {
print(name)
}
// Brian, Jack
for name in names[..<2] {
print(name)
}
// Anna, Alex
Opérateurs logiques
Les opérateurs logiques modifient ou combinent les valeurs logiques booléennes True et False.
- NON logique !a(si différent de a)
- ET logique a && b(si a et b)
- OU logique a || b(si a ou b)
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
// "ACCESS DENIED"
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// "ACCESS DENIED"
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// "Welcome!"