Che cos'è un 'Option'?
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 35 di 66.
Nella programmazione, spesso ti imbatti in situazioni in cui un valore potrebbe essere presente oppure no. Per esempio, cercando un elemento in un elenco potresti trovarlo, oppure potrebbe non esistere affatto. I linguaggi di programmazione tradizionali spesso usano valori speciali come null o -1 per rappresentare il «nulla», ma questo approccio può causare bug e arresti anomali.
Rust adotta un approccio diverso con l'enum Option<T>. Questo è un tipo integrato che rappresenta esplicitamente la possibilità che un valore sia assente. Invece di indovinare se un valore esiste, Rust ti obbliga a gestire entrambi i casi fin dall'inizio.
L'enum Option ha esattamente due varianti:
Some(value) // Contiene un valore
None // Non contiene alcun valoreQuando una funzione potrebbe non restituire un valore, restituisce un Option. Se c'è un valore da restituire, lo racchiude in Some. Se non c'è alcun valore, restituisce None.
Questo rende esplicita nel sistema dei tipi la possibile assenza, impedendoti di usare accidentalmente un valore che non esiste.
Hai già visto Option in azione con il metodo .get() di una mappa hash: restituisce Some(&value) quando una chiave esiste, oppure None quando non esiste. Questo schema compare in tutto Rust e rende il tuo codice più sicuro e prevedibile.
Provalo tu
Questa lezione non include una sfida di codice.
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'Cicli come espressioniRipasso - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi delle structStruct mutabiliStruct come parametri di funzioneStruct tuplaRiepilogo - Creare una struct Book2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreIterare su un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker dei punteggi di base5Coppie chiave-valore con mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriScorrere una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: inventario semplice degli articoli
Configurazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere tutto insieme3Lista di attività da riga di comando
Configurazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finale6Gestire l'assenza con 'Option'
Che cos'è un 'Option'?Usare 'match' con 'Option'is_some() e is_none()Estrarre il valore da un 'Option'Il metodo expectFornire un valore predefinito: unwrap_orRiepilogo - Trovare un elementoEsercitati da solo: Compilatore Rust online