Resumen - Acciones de Rectángulo
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 7 de 61.
Desafío
FácilCrea una estructura Rectangle con dos campos: width (u32) y height (u32).
Añade un bloque de implementación para Rectangle con lo siguiente:
new— una función asociada que tomawidth: u32yheight: u32y devuelve un nuevoRectanglearea— toma&selfy devuelve el área comou32scale— toma&mut selfy unfactor: u32, multiplica tanto el ancho como el alto por el factor
Recibirás tres entradas:
- Primera línea: el ancho (u32)
- Segunda línea: el alto (u32)
- Tercera línea: el factor de escala (u32)
Crea un Rectangle mutable usando Rectangle::new con las dimensiones proporcionadas. Imprime el área inicial, luego escala el rectángulo por el factor dado e imprime el área nueva.
Formato de salida esperado:
{initial_area}
{scaled_area}Pruébalo tú mismo
use std::io;
// TODO: Define la estructura Rectangle aquí
// TODO: Añade el bloque de implementación para Rectangle con:
// - new: función asociada que toma ancho y alto, devuelve Rectangle
// - area: método que toma &self, devuelve u32
// - scale: método que toma &mut self y factor, multiplica el ancho y el alto
fn main() {
let mut input = String::new();
// Leer ancho
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Leer alto
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Leer factor de escala
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Crear un Rectangle mutable usando Rectangle::new
// TODO: Imprimir el área inicial
// TODO: Escalar el rectángulo por el factor
// TODO: Imprimir la nueva área
}Todas las lecciones de Object Oriented Programming
1Métodos y Comportamiento
Intro a Bloques de ImplementaciónEl Parámetro SelfMétodos MutablesFunciones AsociadasMúltiples Bloques de ImplementaciónEncadenamiento de MétodosResumen - Acciones de Rectángulo4Proyecto: Mascota virtual
Definir la mascotaAlimentar a la mascota7Traits estándar
El trait DebugEl trait DisplayClone y CopyTraits de igualdadResumen - Punto imprimible10Proyecto: Sistema de documentos
El Trait DrawComponente de texto2Encapsulamiento y módulos
Conceptos básicos de módulosLa palabra clave PublicCampos privadosGettersSettersRepaso - Casillero seguro5Genéricos
Estructuras genéricasMétodos genéricosMúltiples tipos genéricosFunciones genéricasResumen - Punto de coordenadas8Traits como límites
Sintaxis de límites de traitsLímites múltiplesLa cláusula whereRetornar tipos con traitsResumen: Impresora genérica11Patrones de diseño en Rust
Patrón NewtypeComposiciónEl Trait DropFrom e IntoResumen - Mock de Smart Pointer3Enums avanzados
Enums con datosMétodos en EnumsCoincidencia de variantes de datosEl Enum Option revisitadoResumen - Enum Shape6Definición de Traits
¿Qué es un Trait?Implementación de TraitsImplementaciones por defectoSobrescribir valores por defectoTraits con parámetrosResumen - Reproductor multimedia