Karmienie zwierzątka
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 20 z 61.
Wyzwanie
ŁatwySkoro Twój pupil już istnieje, czas dać mu możliwość jedzenia! W tym kroku dodasz metodę feed, która pozwoli Ci zadbać o głód pupila.
Rozbuduj istniejący moduł pet.rs, dodając metodę feed, która zmniejsza poziom głodu pupila. Po nakarmieniu głód pupila powinien zmniejszyć się o 30, ale nigdy nie powinien spaść poniżej 0. Po nakarmieniu metoda powinna wyświetlić komunikat informujący, że pupilowi smakował posiłek.
Potrzebna będzie również metoda pobierająca hunger, aby można było sprawdzić poziom głodu pupila spoza modułu.
W pliku main.rs odczytasz imię pupila i początkową wartość głodu. Utwórz pupila, ustaw jego początkowy poziom głodu, nakarm go raz, a następnie wyświetl zaktualizowany poziom głodu.
Wynik powinien mieć następujący format:
{name} enjoyed the meal!
Hunger: {hunger_level}Na przykład, jeśli dane wejściowe to:
Buddy
50Wynik powinien być następujący:
Buddy enjoyed the meal!
Hunger: 20A jeśli początkowy poziom głodu wynosi 20, nakarmienie obniży go do 0 (nie do wartości ujemnej):
Buddy enjoyed the meal!
Hunger: 0Musisz dodać metodę set_hunger, aby ustawić początkowy poziom głodu na potrzeby testów, ponieważ konstruktor new domyślnie ustawia głód na 0.
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 my_pet = Pet::new(name);
println!("Pet name: {}", my_pet.name());
}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