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.. 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..


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

Les plages de valeurs avec une condition Switch

Vous pouvez vérifier si une expression répond à une plage de valeurs en utilisant la syntaxe case value1...value2: :


switch expression {
  case 1...10:
    // code à exécuter si expression est compris entre 1 et 10
  case 11...20:
    // code à exécuter si expression est compris entre 11 et 20
  default:
    // code à exécuter si expression ne correspond à aucune des valeurs définies précédemment
}