Reporte de estado
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 22 de 61.
Desafío
Fácil¡Tu mascota virtual está progresando muy bien! Ahora vamos a darle la capacidad de informar sobre cómo se siente. En este paso, añadirás un método status que proporcione una visión general completa del estado actual de tu mascota.
El informe de estado debe describir la condición de tu mascota basándose en sus niveles de energía y hambre. Tu mascota puede estar en diferentes estados de ánimo dependiendo de qué tan bien la hayas estado cuidando:
- Si la energía es
50o superior Y el hambre es50o inferior, tu mascota está happy - De lo contrario, tu mascota está tired
Añade un método status a tu Pet que reciba &self e imprima un informe de estado completo que muestre el nombre, la energía, el hambre y el estado de ánimo de la mascota.
El informe de estado debe seguir este formato exacto:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}En tu main.rs, lee el nombre, la energía y los valores de hambre de la mascota, configura tu mascota con esos valores y luego llama al método status para mostrar el informe.
Por ejemplo, si la entrada es:
Buddy
70
30La salida debería ser:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyY si la entrada es:
Max
40
60La salida debería ser:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tired¡Este método te ofrece una forma rápida de comprobar el bienestar de tu mascota en cualquier momento!
Pruébalo tú mismo
mod pet;
use pet::Pet;
fn main() {
let mut name = String::new();
std::io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
let mut energy_input = String::new();
std::io::stdin().read_line(&mut energy_input).expect("Failed to read line");
let initial_energy: u32 = energy_input.trim().parse().expect("Failed to parse energy");
let mut hunger_input = String::new();
std::io::stdin().read_line(&mut hunger_input).expect("Failed to read line");
let initial_hunger: u32 = hunger_input.trim().parse().expect("Failed to parse hunger");
let mut my_pet = Pet::new(name);
my_pet.set_energy(initial_energy);
my_pet.set_hunger(initial_hunger);
my_pet.play();
println!("Energy: {}", my_pet.energy());
println!("Hunger: {}", my_pet.hunger());
}
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