Definiowanie zwierzątka
Część sekcji Programowanie obiektowe ścieżki Rust w Coddy. Lekcja 19 z 61.
Wyzwanie
ŁatwyWitaj w projekcie Wirtualne zwierzątko! W ciągu kilku kolejnych lekcji zbudujesz kompletną symulację zwierzątka, która łączy wszystko, czego nauczyłeś się o strukturach, metodach, modułach i enkapsulacji.
Zacznijmy budować Twoje Wirtualne zwierzątko! W tym pierwszym kroku przygotujesz podstawy, tworząc strukturę Pet we własnym module z odpowiednią enkapsulacją.
Rozmieścisz swój kod w dwóch plikach:
pet.rs: Zdefiniuj strukturęPetz trzema prywatnymi polami:name(String),energy(u32) ihunger(u32). Zaimplementuj publiczną funkcję skojarzonąnew, która przyjmuje imię i tworzy zwierzątko z wartościąenergyustawioną na100i wartościąhungerustawioną na0. Dodaj także publiczną metodę pobierającąname, która zwraca referencję do imienia zwierzątka.main.rs: Zadeklaruj modułpeti wprowadźPetdo zakresu. Odczytaj imię z wejścia, utwórz zwierzątko o tym imieniu i wypisz powitalny komunikat.
Powitalny komunikat powinien mieć następujący format:
Welcome, {name}!Na przykład, jeśli dane wejściowe to Buddy, wynikiem powinno być:
Welcome, Buddy!Pamiętaj, że struktura powinna być publiczna, aby można było używać jej z main.rs, ale pola powinny pozostać prywatne: dostęp do nich powinien być możliwy wyłącznie za pośrednictwem udostępnionych przez Ciebie metod.
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();
// TODO: Utwórz nowy obiekt Pet o podanym imieniu
// TODO: Wypisz wiadomość powitalną, używając gettera imienia zwierzęcia
// Format: "Welcome, {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