Definire l'animale
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 19 di 61.
Sfida
FacileBenvenuto nel progetto Animaletto virtuale! Nelle prossime lezioni costruirai una simulazione completa di un animaletto che riunisce tutto ciò che hai imparato sulle struct, i metodi, i moduli e l'incapsulamento.
Iniziamo a costruire il tuo animaletto virtuale! In questo primo passaggio, getterai le basi creando una struct Pet nel suo modulo, con un corretto incapsulamento.
Organizzerai il codice in due file:
pet.rs: definisci la structPetcon tre campi privati:name(String),energy(u32) ehunger(u32). Implementa una funzione associata pubblicanewche accetta un nome e crea un animaletto conenergyimpostata su100ehungerimpostata su0. Aggiungi anche un metodo getter pubbliconameche restituisce un riferimento al nome dell'animaletto.main.rs: dichiara il modulopete importaPetnell'ambito corrente. Leggi un nome dall'input, crea un nuovo animaletto con quel nome e stampa un messaggio di benvenuto.
Il messaggio di benvenuto deve seguire questo formato:
Welcome, {name}!Ad esempio, se l'input è Buddy, l'output dovrebbe essere:
Welcome, Buddy!Ricorda che la struct deve essere pubblica per poter essere usata da main.rs, ma i campi devono rimanere privati: vi si può accedere solo attraverso i metodi che fornisci.
Provalo tu
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: Crea un nuovo Pet con il nome fornito
// TODO: Stampa il messaggio di benvenuto usando il getter del nome del pet
// Formato: "Welcome, {name}!"
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Metodi e comportamento
Introduzione ai blocchi implIl parametro selfMetodi mutabiliFunzioni associateBlocchi impl multipliConcatenamento di metodiRiepilogo - Azioni sul rettangolo4Progetto: animale domestico virtuale
Definire l'animaleNutrire l'animale7Trait standard
Il trait DebugIl trait DisplayClone e CopyTrait di uguaglianzaRiepilogo - Punto stampabile10Progetto: sistema di documenti
Il trait DrawComponente di testo2Incapsulamento e moduli
Nozioni di base sui moduliLa parola chiave publicCampi privatiGetterSetterRiepilogo - Armadietto sicuro5Generics
Struct genericheMetodi genericiPiù tipi genericiFunzioni genericheRipasso - Punto di coordinate8I Trait come vincoli
Sintassi dei vincoli sui traitVincoli multipliLa clausola whereRestituire tipi con i traitRiepilogo - Stampante generica11Modelli di progettazione in Rust
Pattern NewtypeComposizioneIl trait DropFrom e IntoRipasso - Mock con smart pointer3Enumerazioni avanzate
Enumerazioni con datiMetodi sulle enumerazioniCorrispondenza delle varianti con datiL'enumerazione Option ripresaRiepilogo - enumerazione Shape6Definizione dei trait
Che cos’è un trait?Implementare i traitImplementazioni predefiniteSovrascrivere le implementazioni predefiniteTrait con parametriRiepilogo - Lettore multimedialeEsercitati da solo: Compilatore Rust online