Les Tableaux en Swift

Qu'est-ce qu'un tableau ?

Les tableaux en Swift sont des ensembles ordonnés de valeurs qui partagent le même type de données et qui sont contenus dans une structure unique. Étant un langage fortement typé, Swift renvoie des erreurs de compilation si l'on tente d'insérer des valeurs de types différents dans un tableau (par exemple, un String dans un tableau d'Int). Il est toutefois possible d'avoir des valeurs répétées, chaque occurrence étant stockée à une position unique.

Création de tableaux

Il existe plusieurs méthodes pour créer des tableaux, chacune ayant un cas d'utilisation spécifique. Par exemple, pour déclarer un tableau vide, vous pouvez utiliser la syntaxe suivante :

var nomDuTableau = [Type]() // Exemple : var monTableau = [Int]()

Cette syntaxe est utile si vous ne devez pas encore ajouter d'éléments ou si la taille du tableau n'est pas prédéterminée.

On peut également initialiser un tableau avec une taille prédéfinie et des valeurs par défaut. Par exemple, pour un jeu de Battleship, où l'on souhaite initialiser un tableau de 10 emplacements marqués par "U" (pour "Unchecked") :

var alphaRow = [Character](repeating: "U", count: 10) // Crée : ["U", "U", "U", "U", "U", "U", "U", "U", "U", "U"]

Swift permet également d'initialiser un tableau directement en lui assignant des valeurs :

// Déclaration de type explicite
var etatsVisites: [String] = ["NY", "CA", "TX", "FL"]
// Inférence de type
var etatsÀVisiter = ["ME", "ID", "NV", "AK"]

Accès aux tableaux

L'accès aux tableaux se fait par la notation d'indexation. Les tableaux commencent à l'index 0, donc le premier élément d'un tableau se trouve à nomDuTableau[0], et le dernier élément se situe à un index inférieur à la propriété .count.

var etatsVisites: [String] = ["NY", "CA", "TX", "FL"]
print("Hier, je suis allé à \(etatsVisites[0]).") // Sortie : Hier, je suis allé à NY.
var etatsÀVisiter = ["ME", "ID", "NV", "AK"]
print("Demain, je vais aller à \(etatsÀVisiter[1]) !") // Sortie : Demain, je vais aller à NV !

Attention à ne pas accéder à un élément inexistant, cela générera une erreur à l'exécution :

print("Après le Nevada, je vais me rendre à \(etatsÀVisiter[4]).") // Erreur à l'exécution : Index hors limites

On peut réassigner des valeurs à un élément donné en utilisant son index :

etatsVisites[2] = "MI" // Résultat : ["NY", "CA", "MI", "FL"]

Itération sur les tableaux

Pour parcourir tous les éléments d'un tableau, une boucle for-in est souvent utilisée :

var meilleursNomsBébés = ["Liam", "Jackson"]
for nom in meilleursNomsBébés {  print("\(nom) est le meilleur nom.") }
// Sortie :
// Liam est le meilleur nom.
// Jackson est le meilleur nom.

Notez que vous pouvez aussi utiliser la méthode .forEach() pour itérer sur un tableau.

Propriétés et méthodes des tableaux

La bibliothèque standard de Swift propose plusieurs propriétés intégrées pour les tableaux, telles que .first, .last, et .randomElement. Ces propriétés permettent d'accéder à des informations spécifiques au sein d'un tableau. Par exemple :

print("Les premiers et derniers états que j'ai visités sont \(etatsVisites.first) et \(etatsVisites.last), respectivement.") // Sortie : Les premiers et derniers états que j'ai visités sont NY et FL, respectivement.
print("Pour pimenter ma vie, la semaine prochaine, j'irai à \(etatsVisites.randomElement).")

Il existe aussi de nombreuses méthodes de manipulation de tableaux disponibles dans la bibliothèque standard de Swift, comme : - append(): Ajoute un élément à la fin d'un tableau. - contains(): Retourne vrai si le tableau contient un élément spécifié. - filter(): Renvoie un nouveau tableau avec uniquement les éléments satisfaisant une condition donnée. - map(): Renvoie un nouveau tableau avec les résultats d'une fonction appliquée à chaque élément du tableau.

Voici un tableau récapitulatif de quelques méthodes : - allSatisfy(), insert(), remove(), sort(), etc.