Nourrir l'animal
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 20 sur 61.
Défi
FacileMaintenant que votre animal existe, il est temps de lui donner la capacité de manger ! Dans cette étape, vous allez ajouter une méthode feed qui vous permet de vous occuper de la faim de votre animal.
En vous appuyant sur votre module pet.rs existant, ajoutez une méthode feed qui diminue le niveau de faim de l'animal. Lorsqu'il est nourri, la faim de l'animal doit diminuer de 30, mais elle ne doit jamais descendre en dessous de 0. Après l'avoir nourri, la méthode doit afficher un message indiquant que l'animal a apprécié son repas.
Vous aurez également besoin d'une méthode getter hunger afin de pouvoir vérifier le niveau de faim de l'animal depuis l'extérieur du module.
Dans main.rs, vous lirez le nom de l'animal et une valeur de faim initiale. Créez votre animal, définissez sa faim initiale, nourrissez-le une fois, puis affichez le niveau de faim mis à jour.
La sortie doit suivre ce format :
{name} enjoyed the meal!
Hunger: {hunger_level}Par exemple, si l'entrée est :
Buddy
50La sortie doit être :
Buddy enjoyed the meal!
Hunger: 20Et si la faim commence à 20, le nourrir la ramènerait à 0 (pas de valeur négative) :
Buddy enjoyed the meal!
Hunger: 0Vous devrez ajouter une méthode set_hunger pour initialiser la faim à des fins de test, puisque le constructeur new définit la faim à 0 par défaut.
Essayez vous-même
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());
}Toutes les leçons de Object Oriented Programming
1Méthodes et comportement
Introduction aux blocs d'implémentationLe paramètre SelfMéthodes mutablesFonctions associéesBlocs d'implémentation multiplesChaînage de méthodesRécapitulatif - Actions sur le rectangle4Projet : Animal virtuel
Définir l'animalNourrir l'animal7Traits standards
Le trait DebugLe trait DisplayClone et CopyLes traits d'égalitéRécapitulatif - Point affichable10Projet : Système de documents
Le trait DrawComposant texte2Encapsulation et modules
Bases des modulesLe mot-clé publicChamps privésGettersSettersRécapitulatif - Casier sécurisé5Généricité
Structures génériquesMéthodes génériquesPlusieurs types génériquesFonctions génériquesRécapitulatif - Point de coordonnées8Les Traits comme contraintes
Syntaxe des contraintes de traitContraintes multiplesLa clause whereRetourner des types avec des traitsRécapitulatif - Afficheur générique11Design Patterns en Rust
Le pattern NewtypeCompositionLe trait DropFrom et IntoRécapitulatif - Mock de Smart Pointer3Enums avancées
Enums avec donnéesMéthodes sur les EnumsMatching des variantes de donnéesL'Enum Option revisitéeRécapitulatif - Enum Shape6Définition des Traits
Qu'est-ce qu'un Trait ?Implémenter des TraitsImplémentations par défautRedéfinir les comportements par défautTraits avec paramètresRécapitulatif - Lecteur multimédia