Iterar sobre un vector
Parte de la sección Logic & Flow del Journey de Rust de Coddy — lección 11 de 66.
Ahora que ya sabes cómo crear vectores y acceder a elementos individuales, aprendamos a procesar cada elemento de un vector de forma sistemática. El bucle for es perfecto para esta tarea, ya que te permite recorrer cada elemento en secuencia.
Aquí tienes la sintaxis básica para iterar sobre un vector:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}Observa el & antes de names: esto crea una referencia al vector, lo que te permite leer cada elemento sin tomar la propiedad del vector en sí. Cada iteración te da acceso a un elemento a la vez a través de la variable de bucle name.
El bucle for gestiona automáticamente la comprobación de límites por ti. A diferencia de la indexación manual, nunca intentarás accidentalmente acceder a un elemento que no existe. El bucle visitará exactamente tantos elementos como contenga el vector, lo que lo hace tanto seguro como conveniente.
Puedes usar este patrón con cualquier tipo de vector:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Este enfoque es la forma más común e idiomática de procesar todos los elementos de un vector cuando necesitas leer sus valores.
Desafío
FácilEscribe una función sum_all_elements que reciba un vector numbers y devuelva la suma de todos sus elementos.
Usa un bucle for para iterar sobre el vector y acumular la suma de todos los elementos.
Parámetros:
numbers(Vec<i32>): El vector de enteros a sumar
Devuelve: La suma de todos los elementos en el vector (i32)
Hoja de referencia
Para iterar sobre un vector, usa un bucle for con una referencia al vector:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}El & antes del nombre del vector crea una referencia, lo que te permite leer cada elemento sin tomar la propiedad (ownership). El bucle maneja automáticamente la comprobación de límites y visita exactamente tantos elementos como contiene el vector.
Este patrón funciona con cualquier tipo de vector:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Pruébalo tú mismo
fn sum_all_elements(numbers: Vec<i32>) -> i32 {
// 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 Logic & Flow
1Flujo de control avanzado
La expresión 'match'Coincidencia de múltiples valoresCoincidencia de rangosLa expresión 'if let'Bucles como expresionesResumen - Analizador de comandos simple4Agrupando datos con Structs
¿Qué es un Struct?Visión general de los StructsAcceso a los campos de un StructStructs mutablesStructs como parámetros de funcionesStructs de tuplaResumen - Crear un Struct de Libro7Manejo de errores con 'Result'
¿Qué es un 'Result'?Uso de 'match' con 'Result'is_ok() e is_err()Atajos: unwrap y expectEl operador de signo de interrogación '?'Parsing de Strings a númerosResumen - Función de división segura10Closures y funciones anónimas
¿Qué es un Closure?Definir un Closure simpleClosures con parámetrosCapturar el entornoResumen - Closure sumador simple2Introducción a los vectores
¿Qué es un vector?Crear un vectorAñadir elementos con pushAcceder a los elementos de un vectorIterar sobre un vectorIteración mutableEliminar elementosResumen: Rastreador de puntuación básico5Pares clave-valor con Hash Maps
¿Qué es un Hash Map?Crear un Hash MapInsertar pares clave-valorAcceder a los valoresIterar sobre un Hash MapActualizar un valorEliminar un parRepaso: Contador de palabras8Proyecto: Inventario simple de artículos
Configuración del proyectoAgregar un artículoVerificar el stockVender un artículoUniendo todo3Lista de tareas en la línea de comandos
Configuración del proyectoAñadir una tareaVer todas las tareasEliminar una tareaCódigo final