Raport o stanie
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 22 z 61.
Wyzwanie
ŁatwyTwój wirtualny pupil ma się coraz lepiej! Teraz dodajmy mu możliwość informowania o tym, jak się czuje. W tym kroku dodasz metodę status, która przedstawia pełny przegląd aktualnego stanu pupila.
Raport o stanie powinien opisywać kondycję pupila na podstawie poziomu energii i głodu. Pupil może być w różnym nastroju, w zależności od tego, jak dobrze się nim opiekujesz:
- Jeśli energia wynosi
50lub więcej ORAZ głód wynosi50lub mniej, pupil jest szczęśliwy - W przeciwnym razie pupil jest zmęczony
Dodaj do Pet metodę status, która przyjmuje &self i wyświetla pełny raport o stanie, zawierający imię pupila, poziom energii, głód i nastrój.
Raport o stanie powinien mieć dokładnie następujący format:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}W pliku main.rs odczytaj imię pupila, poziom energii i głód, skonfiguruj pupila przy użyciu tych wartości, a następnie wywołaj metodę status, aby wyświetlić raport.
Na przykład, jeśli dane wejściowe to:
Buddy
70
30Wynik powinien być następujący:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyA jeśli dane wejściowe to:
Max
40
60Wynik powinien być następujący:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredTa metoda pozwala szybko sprawdzić samopoczucie pupila w dowolnym momencie!
Spróbuj swoich sił
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());
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Metody i zachowanie
Wprowadzenie do bloków implementacjiParametr selfMetody modyfikująceFunkcje powiązaneWiele bloków implementacjiŁańcuchowe wywoływanie metodPowtórzenie — działania na prostokącie4Projekt: Wirtualne zwierzątko
Definiowanie zwierzątkaKarmienie zwierzątka7Standardowe cechy
Cecha DebugCecha DisplayClone i CopyCechy równościPowtórka – punkt do wydrukowania10Projekt: System dokumentów
Trait DrawKomponent tekstowy2Hermetyzacja i moduły
Podstawy modułówSłowo kluczowe publicPola prywatneGetterySetteryPodsumowanie — bezpieczna skrytka5Typy generyczne
Struktury generyczneMetody generyczneWiele typów generycznychFunkcje generycznePodsumowanie – punkt współrzędnych8Cechy jako ograniczenia
Składnia ograniczeń cechWiele ograniczeńKlauzula whereZwracanie typów z użyciem cechPodsumowanie — generyczna drukarka11Wzorce projektowe w Rust
Wzorzec NewtypeKompozycjaTrait DropFrom i IntoPodsumowanie — atrapowy inteligentny wskaźnik3Zaawansowane typy wyliczeniowe
Typy wyliczeniowe z danymiMetody typów wyliczeniowychDopasowywanie wariantów danychTyp wyliczeniowy Option — powtórzeniePodsumowanie — typ wyliczeniowy Shape6Definiowanie cech
Czym jest cecha?Implementowanie cechImplementacje domyślneNadpisywanie wartości domyślnychCechy z parametramiPowtórzenie — odtwarzacz multimedialnyPoćwicz samodzielnie: Kompilator Rust online