Alimentar a la mascota
Parte de la sección Object Oriented Programming del Journey de Rust de Coddy — lección 20 de 61.
Desafío
Fácil¡Ahora que tu mascota existe, es hora de darle la capacidad de comer! En este paso, agregarás un método feed que te permitirá cuidar del hambre de tu mascota.
Basándote en tu módulo pet.rs existente, agrega un método feed que disminuya el nivel de hambre de la mascota. Al ser alimentada, el hambre de la mascota debe disminuir en 30, pero nunca debe bajar de 0. Después de alimentar, el método debe imprimir un mensaje que muestre que la mascota disfrutó su comida.
También necesitarás un método getter hunger para que puedas verificar el nivel de hambre de la mascota desde fuera del módulo.
En main.rs, leerás el nombre de la mascota y un valor de hambre inicial. Crea tu mascota, establece su hambre inicial, aliméntala una vez y luego muestra el nivel de hambre actualizado.
La salida debe seguir este formato:
{name} enjoyed the meal!
Hunger: {hunger_level}Por ejemplo, si la entrada es:
Buddy
50La salida debe ser:
Buddy enjoyed the meal!
Hunger: 20Y si el hambre comienza en 20, alimentarla la llevaría a 0 (no negativo):
Buddy enjoyed the meal!
Hunger: 0Necesitarás agregar un método set_hunger para inicializar el hambre con fines de prueba, ya que el constructor new establece el hambre en 0 por defecto.
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 my_pet = Pet::new(name);
println!("Pet name: {}", my_pet.name());
}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