Resoconto dello stato
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 22 di 61.
Sfida
FacileIl tuo animale domestico virtuale sta venendo bene! Ora diamogli la capacità di riferire come si sente. In questo passaggio, aggiungerai un metodo status che fornisce una panoramica completa dello stato attuale del tuo animale domestico.
Il rapporto sullo stato dovrebbe descrivere le condizioni del tuo animale domestico in base ai suoi livelli di energia e fame. Il tuo animale domestico può essere di umore diverso a seconda di quanto bene te ne sei preso cura:
- Se l'energia è pari o superiore a
50E la fame è pari o inferiore a50, il tuo animale domestico è felice - Altrimenti, il tuo animale domestico è stanco
Aggiungi un metodo status a Pet che accetti &self e stampi un rapporto completo sullo stato, mostrando il nome, l'energia, la fame e l'umore dell'animale domestico.
Il rapporto sullo stato deve seguire esattamente questo formato:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}Nel tuo main.rs, leggi il nome, i valori di energia e fame dell'animale domestico, imposta il tuo animale domestico con quei valori e poi chiama il metodo status per visualizzare il rapporto.
Ad esempio, se l'input è:
Buddy
70
30L'output dovrebbe essere:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyE se l'input è:
Max
40
60L'output dovrebbe essere:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredQuesto metodo ti offre un modo rapido per controllare in qualsiasi momento come sta il tuo animale domestico!
Provalo tu
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());
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Metodi e comportamento
Introduzione ai blocchi implIl parametro selfMetodi mutabiliFunzioni associateBlocchi impl multipliConcatenamento di metodiRiepilogo - Azioni sul rettangolo4Progetto: animale domestico virtuale
Definire l'animaleNutrire l'animale7Trait standard
Il trait DebugIl trait DisplayClone e CopyTrait di uguaglianzaRiepilogo - Punto stampabile10Progetto: sistema di documenti
Il trait DrawComponente di testo2Incapsulamento e moduli
Nozioni di base sui moduliLa parola chiave publicCampi privatiGetterSetterRiepilogo - Armadietto sicuro5Generics
Struct genericheMetodi genericiPiù tipi genericiFunzioni genericheRipasso - Punto di coordinate8I Trait come vincoli
Sintassi dei vincoli sui traitVincoli multipliLa clausola whereRestituire tipi con i traitRiepilogo - Stampante generica11Modelli di progettazione in Rust
Pattern NewtypeComposizioneIl trait DropFrom e IntoRipasso - Mock con smart pointer3Enumerazioni avanzate
Enumerazioni con datiMetodi sulle enumerazioniCorrispondenza delle varianti con datiL'enumerazione Option ripresaRiepilogo - enumerazione Shape6Definizione dei trait
Che cos’è un trait?Implementare i traitImplementazioni predefiniteSovrascrivere le implementazioni predefiniteTrait con parametriRiepilogo - Lettore multimedialeEsercitati da solo: Compilatore Rust online