Das Haustier füttern
Teil des Abschnitts Object Oriented Programming der Rust-Journey von Coddy — Lektion 20 von 61.
Aufgabe
EinfachJetzt, da dein Haustier existiert, ist es an der Zeit, ihm die Fähigkeit zu geben, zu fressen! In diesem Schritt wirst du eine feed-Methode hinzufügen, mit der du dich um den Hunger deines Haustiers kümmern kannst.
Baue auf deinem bestehenden pet.rs-Modul auf und füge eine feed-Methode hinzu, die das Hungerniveau des Haustiers verringert. Wenn es gefüttert wird, sollte der Hunger des Haustiers um 30 sinken, aber er sollte niemals unter 0 fallen. Nach dem Füttern sollte die Methode eine Nachricht ausgeben, die zeigt, dass das Haustier seine Mahlzeit genossen hat.
Du benötigst außerdem eine hunger-Getter-Methode, damit du das Hungerniveau des Haustiers von außerhalb des Moduls überprüfen kannst.
In main.rs wirst du den Namen des Haustiers und einen anfänglichen Hungerwert einlesen. Erstelle dein Haustier, setze seinen anfänglichen Hunger, füttere es einmal und zeige dann das aktualisierte Hungerniveau an.
Die Ausgabe sollte diesem Format folgen:
{name} enjoyed the meal!
Hunger: {hunger_level}Wenn die Eingabe zum Beispiel wie folgt lautet:
Buddy
50Sollte die Ausgabe so aussehen:
Buddy enjoyed the meal!
Hunger: 20Und wenn der Hunger bei 20 beginnt, würde das Füttern ihn auf 0 bringen (nicht negativ):
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 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