Riepilogo - Azioni sul rettangolo
Fa parte della sezione Programmazione orientata agli oggetti del percorso Rust di Coddy. Lezione 7 di 61.
Sfida
FacileCrea una struct Rectangle con due campi: width (u32) e height (u32).
Aggiungi un blocco di implementazione per Rectangle con quanto segue:
new: una funzione associata che accettawidth: u32eheight: u32e restituisce un nuovoRectanglearea: accetta&selfe restituisce l'area comeu32scale: accetta&mut selfe unfactor: u32, moltiplica sia la larghezza sia l'altezza per il fattore
Riceverai tre input:
- Prima riga: la larghezza (u32)
- Seconda riga: l'altezza (u32)
- Terza riga: il fattore di scala (u32)
Crea un Rectangle mutabile usando Rectangle::new con le dimensioni fornite. Stampa l'area iniziale, poi ridimensiona il rettangolo con il fattore indicato e stampa la nuova area.
Formato di output previsto:
{initial_area}
{scaled_area}Provalo tu
use std::io;
// TODO: Definisci qui la struct Rectangle
// TODO: Aggiungi il blocco di implementazione per Rectangle con:
// - new: funzione associata che riceve width e height e restituisce Rectangle
// - area: metodo che riceve &self e restituisce u32
// - scale: metodo che riceve &mut self e factor e moltiplica width e height
fn main() {
let mut input = String::new();
// Leggi width
io::stdin().read_line(&mut input).expect("Failed to read line");
let width: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Leggi height
io::stdin().read_line(&mut input).expect("Failed to read line");
let height: u32 = input.trim().parse().expect("Invalid number");
input.clear();
// Leggi factor di scala
io::stdin().read_line(&mut input).expect("Failed to read line");
let factor: u32 = input.trim().parse().expect("Invalid number");
// TODO: Crea un Rectangle mutabile usando Rectangle::new
// TODO: Stampa l'area iniziale
// TODO: Ridimensiona il rettangolo in base a factor
// TODO: Stampa la nuova area
}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