Altre slice
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 57 di 66.
Sebbene le fette di stringa siano molto utili, lo slicing non è limitato alle sole stringhe. Il concetto di slice di Rust si estende a qualsiasi sequenza di elementi, rendendolo uno strumento potente per lavorare con le collezioni senza acquisirne la proprietà.
Puoi creare slice da array e vettori usando la stessa sintassi che hai imparato per le stringhe. Per esempio, se hai un array di numeri, puoi creare una slice che fa riferimento a una parte o alla totalità dell’array:
let numbers = [1, 2, 3, 4, 5];
let slice: &[i32] = &numbers[1..4]; // Questo ci restituisce [2, 3, 4]
let full_slice: &[i32] = &numbers; // Questo fa riferimento all'intero arrayLo stesso principio vale per i vettori. Puoi creare slice dai vettori per lavorare con porzioni dei dati senza spostarli né copiarli:
let mut vec = vec![10, 20, 30, 40];
let vec_slice: &[i32] = &vec[0..2]; // Questo ci dà [10, 20]Sfida
FacileRiceverai tre input. Il primo input è un elenco di numeri separati da virgole. Il secondo input è composto da due numeri separati da uno spazio, che rappresentano gli indici iniziale e finale per creare una slice. Il terzo input è un singolo numero che rappresenta un indice a cui accedere nella slice.
Crea un vettore dai numeri separati da virgole, poi crea una slice usando l'intervallo specificato. Accedi all'elemento all'indice indicato nella slice e stampalo.
Requisiti:
- Leggi il primo input (numeri separati da virgole) e rimuovi gli spazi bianchi iniziali e finali
- Dividi l'input in base alle virgole e analizza ogni numero come
i32 - Crea un vettore a partire da questi numeri
- Leggi il secondo input (due numeri separati da uno spazio) e rimuovi gli spazi bianchi iniziali e finali
- Dividi il secondo input in base allo spazio per ottenere gli indici iniziale e finale
- Analizza entrambi gli indici come
usize - Crea una slice dal vettore usando la sintassi per gli intervalli
&vec[start..end] - Leggi il terzo input (indice a cui accedere) e rimuovi gli spazi bianchi iniziali e finali
- Analizza l'indice come
usize - Accedi all'elemento all'indice specificato nella slice
- Stampa l'elemento a cui hai avuto accesso
Input:
- Prima riga: numeri separati da virgole (ad es.,
10,20,30,40,50) - Seconda riga: due numeri separati da uno spazio (ad es.,
1 4) - Terza riga: un numero che indica un indice (ad es.,
2)
Output:
- L'elemento all'indice specificato nella slice
Provalo tu
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// Leggi il primo input (numeri separati da virgole)
let first_input = lines.next().unwrap().unwrap();
// Leggi il secondo input (indici iniziale e finale)
let second_input = lines.next().unwrap().unwrap();
// Leggi il terzo input (indice a cui accedere)
let third_input = lines.next().unwrap().unwrap();
// TODO: Scrivi il tuo codice qui sotto
// Analizza i numeri separati da virgole e crea un vettore
// Analizza gli indici iniziale e finale
// Crea una slice dal vettore
// Accedi all'elemento della slice all'indice specificato
// Stampa il risultato
// println!("{}", result);
}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 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 elemento9Slice di stringa e altro
String vs. &strCreare slice di stringaSlice come parametri di funzioneAltre sliceRiepilogo - Trovare la prima parolaEsercitati da solo: Compilatore Rust online