Convertir segmentos de nuevo en arrays
Materialice un segmento en un array independiente.
Convertir segmentos de nuevo en arrays es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 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 no son arrays
Un ArraySlice es un tipo distinto de Array. Muchas API esperan un Array concreto, por lo que a menudo tendrá que convertirlo.
let original = [1, 2, 3, 4, 5]
let slice = original[1..<4]
print(type(of: slice))Array(slice)
Envuelva un slice en el inicializador Array(...) para crear un array nuevo e independiente, con los elementos copiados y con índices basados en cero.
let original = [10, 20, 30, 40, 50]
let slice = original[2..<5]
let array = Array(slice)
print(array)
print(type(of: array))Los índices vuelven a empezar en cero
Después de la conversión, el array nuevo vuelve a indexarse desde 0, a diferencia del slice, que conservaba los índices del array principal.
let original = [1, 2, 3, 4, 5]
let slice = original[3..<5]
let copy = Array(slice)
print("slice start:", slice.startIndex)
print("array start:", copy.startIndex)La conversión copia el almacenamiento
La conversión obliga a copiar los datos. El array nuevo deja de compartir almacenamiento con el array principal, por lo que modificarlo no afecta al original.
let original = [1, 2, 3, 4]
var copy = Array(original[1..<3])
copy[0] = 999
print("original:", original)
print("copy:", copy)Devolver arrays desde funciones
Cuando una función devuelve parte de un array, convierta el slice para que quienes la llamen reciban un Array normal.
func firstThree(of nums: [Int]) -> [Int] {
return Array(nums.prefix(3))
}
print(firstThree(of: [9, 8, 7, 6, 5]))Pasar valores a parámetros de tipo Array
Si un parámetro de una API tiene el tipo [Int], debe convertir el slice antes de pasarlo.
func total(_ values: [Int]) -> Int {
return values.reduce(0, +)
}
let data = [1, 2, 3, 4, 5]
let result = total(Array(data[1..<4]))
print(result)Cuándo no es necesaria la conversión
Si su función acepta una Sequence o una Collection genérica, puede pasarle el slice directamente sin convertirlo.
func describe<S: Sequence>(_ s: S) where S.Element == Int {
print(Array(s))
}
let arr = [2, 4, 6, 8]
describe(arr[1..<3])Compromiso de memoria
Los slices evitan copias y mantienen vivo el almacenamiento del contenedor padre. Si conserva durante mucho tiempo un slice pequeño de un array enorme, conviértalo en un array para que pueda liberarse el búfer grande.
let huge = Array(1...1000)
let keep = Array(huge[0..<3]) // small independent copy
print(keep)Conversión a un Set
También puede pasar un slice a otros inicializadores de colecciones, como Set.
let arr = [1, 2, 2, 3, 3, 3]
let uniqueTail = Set(arr[2..<6])
print(uniqueTail.sorted())Conversión de ida y vuelta
Es perfectamente válido crear un slice, convertirlo y volver a crear un slice. Cada conversión es explícita y predecible.
let arr = [10, 20, 30, 40, 50]
let a = Array(arr[1..<4])
let b = Array(a[0..<2])
print(a)
print(b)Práctica recomendada
Siga trabajando con slices durante los cálculos y conviértalos en Array solo en el límite donde almacena o devuelve el resultado.
let arr = [3, 1, 4, 1, 5, 9, 2]
let top3 = Array(arr.sorted(by: >)[0..<3])
print(top3)Comprobación rápida
Pruebe la conversión de slices.
Resumen
Use Array(slice) para convertir un ArraySlice en un array independiente con índices que comienzan en cero y almacenamiento copiado. Convierta en los límites de la API; mantenga los slices durante los cálculos para evitar copias adicionales.
let s = [1, 2, 3, 4, 5][2..<5]
let a = Array(s)
print(a, a.startIndex)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 «Convertir segmentos de nuevo en arrays» es gratis?
Sí — el texto completo de «Convertir segmentos de nuevo en arrays» 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 «Convertir segmentos de nuevo en arrays»?
Materialice un segmento en un array independiente. 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 3 de 4.
¿Cuánto tiempo toma la lección «Convertir segmentos de nuevo en arrays»?
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