Sémantique des indices d’ArraySlice
Comprenez pourquoi les indices d’une tranche conservent les positions d’origine.
Sémantique des indices d’ArraySlice est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. 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 4 leçons au total.
Les slices conservent les indices d'origine
Une surprise importante : une ArraySlice ne recommence pas l'indexation à zéro. Elle conserve les mêmes indices que dans le tableau parent.
let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)startIndex n'est pas toujours zéro
Le startIndex d'une slice est égal à la borne inférieure utilisée pour la créer. Pour arr[2..<5], l'indice de départ est 2.
let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])Accéder par indice à une slice
Comme les indices sont conservés, vous devez utiliser les indices propres à la slice. Accéder à slice[0] sur une slice qui commence à l'indice 2 provoquera un plantage à l'exécution.
let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])Utiliser startIndex en toute sécurité
Pour obtenir le premier élément quel que soit le point de départ de la slice, utilisez slice.first ou slice[slice.startIndex].
let arr = [5, 6, 7, 8, 9]
let slice = arr[2..<5]
print(slice.first ?? -1)
print(slice[slice.startIndex])endIndex est situé après le dernier élément
Comme pour les tableaux, endIndex indique une position située juste après le dernier élément valide. Accéder à endIndex est invalide.
let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])Compter ou indexer
Le count d'une slice correspond au nombre d'éléments, qui peut différer de son endIndex. Ne supposez jamais que count est égal au dernier indice.
let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)Propriété des indices
Utilisez la propriété indices pour parcourir en toute sécurité la plage d'indices valides d'une slice.
let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
print(i, slice[i])
}Pourquoi conserver les indices
La conservation des indices vous permet de relier une position dans la slice au tableau original sans gestion supplémentaire. L'indice trouvé est également valide dans le tableau parent.
let arr = ["a", "b", "c", "d", "e"]
let slice = arr[2..<5]
if let idx = slice.firstIndex(of: "d") {
print("found at parent index:", idx)
print("parent has:", arr[idx])
}enumerated() recommence à zéro
Si vous voulez des positions commençant à zéro, utilisez enumerated(). Cette fonction fournit des décalages commençant à 0, quel que soit le startIndex de la slice.
let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
print(offset, value)
}Distance depuis le début
Pour calculer un décalage commençant à zéro à partir d'un indice, utilisez distance(from:to:).
let arr = [1, 2, 3, 4, 5]
let slice = arr[2..<5]
let idx = slice.startIndex + 1
let offset = slice.distance(from: slice.startIndex, to: idx)
print("offset:", offset, "value:", slice[idx])Un bogue courant
Oublier que les slices conservent les indices du tableau parent est l'un des bogues Swift les plus courants. Préférez toujours first, enumerated() ou startIndex à un 0 écrit en dur.
let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)Vérification rapide
Raisonnez sur les indices des slices.
Récapitulatif
Une ArraySlice conserve les indices du tableau parent : son startIndex est la borne inférieure, et non zéro. Utilisez first, startIndex, indices ou enumerated() pour accéder aux éléments en toute sécurité, jamais un 0 écrit en dur.
let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Sémantique des indices d’ArraySlice » est-elle gratuite ?
Oui — le texte complet de « Sémantique des indices d’ArraySlice » 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 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Sémantique des indices d’ArraySlice » ?
Comprenez pourquoi les indices d’une tranche conservent les positions d’origine. 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 2 sur 4.
Combien de temps prend la leçon « Sémantique des indices d’ArraySlice » ?
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.
Toutes les leçons de ce cours
- Créer des tranches avec des plages
- Sémantique des indices d’ArraySlice
- Recon convertir les tranches en tableaux
- prefix, suffix et dropFirst