Rapport d'état
Fait partie de la section Object Oriented Programming du Journey Rust de Coddy — leçon 22 sur 61.
Défi
FacileVotre animal virtuel progresse bien ! Maintenant, donnons-lui la capacité de signaler comment il se sent. Dans cette étape, vous allez ajouter une méthode status qui fournit un aperçu complet de l'état actuel de votre animal.
Le rapport d'état doit décrire la condition de votre animal en fonction de ses niveaux d'énergie et de faim. Votre animal peut être dans différentes humeurs selon la façon dont vous vous en occupez :
- Si l'énergie est de
50ou plus ET que la faim est de50ou moins, votre animal est happy - Sinon, votre animal est tired
Ajoutez une méthode status à votre Pet qui prend &self et affiche un rapport d'état complet montrant le nom, l'énergie, la faim et l'humeur de l'animal.
Le rapport d'état doit suivre exactement ce format :
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}Dans votre main.rs, lisez le nom, l'énergie et les valeurs de faim de l'animal, configurez votre animal avec ces valeurs, puis appelez la méthode status pour afficher le rapport.
Par exemple, si l'entrée est :
Buddy
70
30La sortie doit être :
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyEt si l'entrée est :
Max
40
60La sortie doit être :
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredCette méthode vous donne un moyen rapide de vérifier le bien-être de votre animal à tout moment !
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 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());
}
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