Statusbericht
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 22 von 61.
Aufgabe
EinfachDein virtuelles Haustier entwickelt sich prächtig! Jetzt geben wir ihm die Fähigkeit, darüber zu berichten, wie es sich fühlt. In diesem Schritt wirst du eine status-Methode hinzufügen, die einen vollständigen Überblick über den aktuellen Zustand deines Haustiers gibt.
Der Statusbericht soll den Zustand deines Haustiers basierend auf seinem Energie- und Hungerlevel beschreiben. Dein Haustier kann in verschiedenen Stimmungen sein, je nachdem, wie gut du dich um es gekümmert hast:
- Wenn die Energie
50oder höher ist UND der Hunger50oder niedriger ist, ist dein Haustier happy - Andernfalls ist dein Haustier tired
Füge deiner Pet-Struktur eine status-Methode hinzu, die &self entgegennimmt und einen vollständigen Statusbericht ausgibt, der den Namen, die Energie, den Hunger und die Stimmung des Haustiers anzeigt.
Der Statusbericht sollte genau diesem Format folgen:
--- Status Report ---
Name: {name}
Energy: {energy}
Hunger: {hunger}
Mood: {mood}Lies in deiner main.rs den Namen, die Energie- und die Hungerwerte des Haustiers ein, konfiguriere dein Haustier mit diesen Werten und rufe dann die status-Methode auf, um den Bericht anzuzeigen.
Wenn die Eingabe zum Beispiel wie folgt aussieht:
Buddy
70
30Sollte die Ausgabe so aussehen:
--- Status Report ---
Name: Buddy
Energy: 70
Hunger: 30
Mood: happyUnd wenn die Eingabe wie folgt aussieht:
Max
40
60Sollte die Ausgabe so aussehen:
--- Status Report ---
Name: Max
Energy: 40
Hunger: 60
Mood: tiredDiese Methode bietet dir eine schnelle Möglichkeit, jederzeit nach dem Wohlbefinden deines Haustiers zu sehen!
Probier es selbst
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());
}
Alle Lektionen in Object Oriented Programming
1Methoden und Verhalten
Einführung in ImplementierungsblöckeDer Self-ParameterVeränderliche MethodenAssoziierte FunktionenMehrere ImplementierungsblöckeMethod ChainingRückblick – Rechteck-Aktionen4Projekt: Virtuelles Haustier
Das Haustier definierenDas Haustier füttern7Standard-Traits
Das Debug-TraitDas Display-TraitClone und CopyGleichheits-TraitsZusammenfassung – Druckbarer Punkt10Projekt: Dokumentensystem
Das Draw-TraitText-Komponente2Kapselung und Module
Grundlagen der ModuleDas Public-SchlüsselwortPrivate FelderGetterSetterWiederholung – Sicherer Tresor5Generics
Generische StructsGenerische MethodenMehrere generische TypenGenerische FunktionenZusammenfassung - Koordinatenpunkt8Traits als Einschränkungen
Syntax für Trait BoundsMehrfache BoundsDie Where-KlauselTypen mit Traits zurückgebenRückblick – Generischer Drucker11Design Patterns in Rust
Newtype-PatternKompositionDas Drop-TraitFrom und IntoZusammenfassung – Smart Pointer Mock3Fortgeschrittene Enums
Enums mit DatenMethoden für EnumsMatching von DatenvariantenDas Option-Enum erneut betrachtetZusammenfassung – Shape-Enum6Definition von Traits
Was ist ein Trait?Traits implementierenStandardimplementierungenStandardimplementierungen überschreibenTraits mit ParameternZusammenfassung – Media Player