Das Haustier füttern
Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 20 von 61.
Aufgabe
EinfachDa dein Haustier nun existiert, ist es an der Zeit, ihm die Fähigkeit zu geben, zu fressen! In diesem Schritt fügst du eine feed-Methode hinzu, mit der du dich um den Hunger deines Haustiers kümmern kannst.
Aufbauend auf deinem vorhandenen pet.rs-Modul fügst du eine feed-Methode hinzu, die den Hungerwert des Haustiers verringert. Wenn es gefüttert wird, soll sein Hunger um 30 sinken, aber niemals unter 0 fallen. Nach dem Füttern soll die Methode eine Nachricht ausgeben, die zeigt, dass dein Haustier seine Mahlzeit genossen hat.
Du benötigst außerdem eine hunger-Getter-Methode, damit du den Hungerwert des Haustiers außerhalb des Moduls überprüfen kannst.
In main.rs liest du den Namen des Haustiers und einen anfänglichen Hungerwert ein. Erstelle dein Haustier, setze seinen anfänglichen Hunger, füttere es einmal und zeige anschließend den aktualisierten Hungerwert an.
Die Ausgabe sollte diesem Format folgen:
{name} enjoyed the meal!
Hunger: {hunger_level}Wenn die Eingabe beispielsweise lautet:
Buddy
50Die Ausgabe sollte dann lauten:
Buddy enjoyed the meal!
Hunger: 20Und wenn der Hunger bei 20 beginnt, würde das Füttern ihn auf 0 senken (nicht in den negativen Bereich):
Buddy enjoyed the meal!
Hunger: 0Du musst eine set_hunger-Methode hinzufügen, um den Hunger zu Testzwecken zu initialisieren, da der new-Konstruktor den Hunger standardmäßig auf 0 setzt.
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 my_pet = Pet::new(name);
println!("Pet name: {}", my_pet.name());
}Alle Lektionen in Objektorientierte Programmierung
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Übe selbstständig: Online-Rust-Compiler