Panoramica sulle struct
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 21 di 66.
Ora che hai capito cosa sono le struct, impariamo a crearle e usarle concretamente. Questo comporta due passaggi: prima definire la struttura della struct, poi crearne delle istanze.
Per definire una struct, si usa la parola chiave struct, seguita dal nome della struct e dai suoi campi racchiusi tra parentesi graffe. Ogni campo ha un nome e un tipo:
struct User {
username: String,
active: bool,
}Questo crea un modello per una struct User con due campi: username di tipo String e active di tipo bool.
Convenzione di denominazione: i nomi delle struct in Rust dovrebbero usare il PascalCase (chiamato anche UpperCamelCase), ovvero ogni parola inizia con una lettera maiuscola, ad esempio User, ProductItem o ShoppingCart. Rust ti avviserà se non segui questa convenzione.
Una volta definita una struct, puoi crearne delle istanze specificando i valori per ciascun campo:
let user1 = User {
username: String::from("alice"),
active: true,
};Nota che fornisci il nome della struct seguito da parentesi graffe contenenti il nome di ciascun campo, due punti e il relativo valore. L’ordine dei campi non deve necessariamente corrispondere a quello della definizione.
Per accedere ai campi di un’istanza di struct, usa la notazione con il punto: scrivi il nome dell’istanza seguito da un punto e dal nome del campo:
println!("Username: {}", user1.username);
println!("Active: {}", user1.active);Qui, user1.username accede al campo username di user1 e user1.active accede al campo active. Puoi usare questi valori dei campi ovunque useresti una normale variabile.
Sfida
FacileRiceverai tre input: il nome di un prodotto, un prezzo (come numero decimale) e una quantità in magazzino (come numero intero). Definisci una struct Product con tre campi: name di tipo String, price di tipo f64 e stock di tipo i32. Poi crea un'istanza di questa struct usando i valori di input e stampa le informazioni sul prodotto.
Requisiti:
- Definisci una struct
Productcon i campi:name: String,price: f64estock: i32 - Leggi il primo input come nome del prodotto
- Leggi il secondo input e convertilo in
f64per il prezzo - Leggi il terzo input e convertilo in
i32per la quantità in magazzino - Crea un'istanza della struct
Productcon questi valori - Stampa le informazioni sul prodotto nel formato esatto mostrato di seguito
Input:
- Prima riga: nome del prodotto (ad es.,
Laptop) - Seconda riga: prezzo come numero decimale (ad es.,
999.99) - Terza riga: quantità in magazzino come numero intero (ad es.,
15)
Output:
- Prima riga:
Product: [name] - Seconda riga:
Price: $[price] - Terza riga:
Stock: [quantity]
Provalo tu
use std::io;
// TODO: Definisci qui la struct Product
fn main() {
// Leggi il nome del prodotto
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// Leggi il prezzo
let mut price_input = String::new();
io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// Leggi la quantità in magazzino
let mut stock_input = String::new();
io::stdin().read_line(&mut stock_input).expect("Failed to read line");
let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
// TODO: Crea un'istanza della struct Product usando i valori di input
// TODO: Stampa le informazioni sul prodotto nel formato richiesto
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L’espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL’espressione 'if let'I cicli come espressioniRiepilogo - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi di una structStruct mutabiliLe struct come parametri di funzioneStruct tuplaRiepilogo - Crea una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreScorrere un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker di punteggi di base5Coppie chiave-valore con le mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriIterare su una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: semplice inventario di articoli
Impostazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere insieme il tutto3Lista di cose da fare da riga di comando
Impostazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finaleEsercitati da solo: Compilatore Rust online