Semántica de índices de ArraySlice
Comprenda por qué los índices de los segmentos conservan las posiciones originales.
Semántica de índices de ArraySlice es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Los slices conservan los índices originales
Una sorpresa importante: un ArraySlice no vuelve a indexar desde cero. Conserva los mismos índices que tenía en el array principal.
let arr = [10, 20, 30, 40, 50]
let slice = arr[2..<5]
print(slice.startIndex)
print(slice.endIndex)startIndex no siempre es cero
El startIndex de un slice equivale al límite inferior usado para crearlo. En arr[2..<5], el índice inicial es 2.
let arr = [1, 2, 3, 4, 5, 6]
let slice = arr[3..<6]
print("start:", slice.startIndex)
print("first value:", slice[slice.startIndex])Usar subíndices en un slice
Como los índices se conservan, debe usar los índices propios del slice. Acceder a slice[0] en un slice que comienza en el índice 2 provoca un error en tiempo de ejecución.
let arr = [100, 200, 300, 400]
let slice = arr[2..<4]
print(slice[2])
print(slice[3])Usar startIndex de forma segura
Para obtener el primer elemento independientemente de dónde comience el slice, use slice.first o 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á una posición después del último elemento
Al igual que en los arrays, endIndex apunta a una posición después del último elemento válido. Usar el subíndice endIndex no es válido.
let arr = [11, 22, 33, 44]
let slice = arr[1..<3]
print("endIndex:", slice.endIndex)
print("last valid:", slice[slice.endIndex - 1])Contar frente a indexar
El count de un slice es el número de elementos, que puede diferir de su endIndex. Nunca suponga que count equivale al último índice.
let arr = [0, 1, 2, 3, 4, 5]
let slice = arr[3..<6]
print("count:", slice.count)
print("startIndex:", slice.startIndex)Propiedad indices
Use la propiedad indices para recorrer de forma segura el rango de índices válidos de un slice.
let arr = [10, 20, 30, 40, 50]
let slice = arr[1..<4]
for i in slice.indices {
print(i, slice[i])
}Por qué se conservan los índices
Conservar los índices permite relacionar una posición del slice con el array original sin llevar un registro adicional. El índice que encuentre también es válido en el array principal.
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() vuelve a empezar en cero
Si quiere posiciones basadas en cero, use enumerated(). Produce offsets que comienzan en 0 independientemente del startIndex del slice.
let arr = [9, 8, 7, 6, 5]
let slice = arr[2..<5]
for (offset, value) in slice.enumerated() {
print(offset, value)
}Distancia desde el inicio
Para calcular un offset basado en cero a partir de un índice, use 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 error frecuente
Olvidar que los slices conservan los índices del array principal es uno de los errores más frecuentes en Swift. Prefiera siempre first, enumerated() o startIndex a un 0 escrito directamente.
let arr = [100, 200, 300, 400, 500]
let slice = arr[3..<5]
// Safe: use first, not slice[0]
print(slice.first ?? 0)Comprobación rápida
Razone sobre los índices de los slices.
Resumen
Un ArraySlice conserva los índices del array principal: su startIndex es el límite inferior, no cero. Use first, startIndex, indices o enumerated() para acceder de forma segura, nunca un 0 escrito directamente.
let slice = [5, 6, 7, 8, 9][3..<5]
print(slice.startIndex, slice.first ?? -1)Aprende Swift con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 122
- Lecciones
- 409
Preguntas frecuentes
¿La lección «Semántica de índices de ArraySlice» es gratis?
Sí — el texto completo de «Semántica de índices de ArraySlice» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Semántica de índices de ArraySlice»?
Comprenda por qué los índices de los segmentos conservan las posiciones originales. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Semántica de índices de ArraySlice»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Crear segmentos con rangos
- Semántica de índices de ArraySlice
- Convertir segmentos de nuevo en arrays
- prefix, suffix y dropFirst