Slicing de Arrays Parte 1
Parte de la sección Fundamentos del Journey de Swift de Coddy — lección 73 de 86.
A veces no necesitas un array completo, solo una parte de él. Swift facilita la extracción de un subconjunto de elementos utilizando la segmentación de arrays (array slicing) con operadores de rango.
Para obtener un segmento (slice), se utiliza un rango dentro de los corchetes de subíndice. El enfoque más común utiliza el operador de rango semiabierto (..<), que incluye el índice inicial pero excluye el índice final:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]Aquí, 1..<4 nos da los elementos en los índices 1, 2 y 3—pero no el índice 4. Esto es útil cuando sabes exactamente dónde quieres detenerte.
Si quieres incluir el índice final, usa el operador de rango cerrado (...):
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]Un detalle importante: el resultado de segmentar es un ArraySlice, no un Array normal. Si necesitas un array real, envuélvelo con Array():
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]Desafío
FácilEscribe una función getMiddleElements que reciba numbers, start y end y devuelva una porción del arreglo desde el índice inicial hasta (pero sin incluir) el índice final.
Usa el operador de rango semiabierto (..<) para extraer la porción especificada del arreglo y devolverla como un arreglo normal.
Parámetros:
numbers([Int]): El arreglo a segmentarstart(Int): El índice inicial (inclusive)end(Int): El índice final (exclusivo)
Devuelve: Un arreglo que contiene los elementos desde el índice inicial hasta (pero sin incluir) el índice final ([Int])
Ejemplo: Si numbers es [10, 20, 30, 40, 50, 60], start es 1 y end es 4, la función debería devolver [20, 30, 40].
Hoja de referencia
Swift te permite extraer una porción de un array utilizando el segmentado de arrays (array slicing) con operadores de rango.
Utiliza el operador de rango semiabierto (..<) para segmentar desde un índice inicial hasta (pero sin incluir) un índice final:
let numbers = [10, 20, 30, 40, 50]
let slice = numbers[1..<4]
print(slice) // [20, 30, 40]Utiliza el operador de rango cerrado (...) para incluir el índice final:
let letters = ["a", "b", "c", "d", "e"]
let slice = letters[1...3]
print(slice) // ["b", "c", "d"]El segmentado de arrays devuelve un ArraySlice. Para convertirlo en un Array normal, envuélvelo con Array():
let original = [1, 2, 3, 4, 5]
let sliced = Array(original[0..<3])
print(sliced) // [1, 2, 3]Pruébalo tú mismo
func getMiddleElements(numbers: [Int], start: Int, end: Int) -> [Int] {
// Escribe el código aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAsignación compuestaResumen - Matemáticas simplesOperadores de comparación7E/S Básica
Función PrintInterpolación de StringsEntrada ReadLineConversión de TiposRepaso - Hasta 120Repaso - Verdadero o Falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosResumen - Función SigmaResumen - Función de validaciónValores por defecto13Iterar sobre secuencias
Iterar sobre elementosEl método enumerateIterar sobre cadenas P1Iterar sobre cadenas P22Variables
Let vs VarAnotaciones de tiposNúmerosStringsBooleanosConvenciones de nomenclaturaResumen - Inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz14Arrays Avanzados
Slicing de Arrays Parte 1Slicing de Arrays Parte 2Operadores de SecuenciaEl Método Contains3Opcionales
Qué son los opcionalesDesempaquetado con If LetGuard LetOperador de coalescencia nulaResumen - Desempaquetado seguro6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámica