Struct mutabili
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 23 di 66.
Per impostazione predefinita, le istanze di struct in Rust sono immutabili: una volta create, non puoi modificarne i valori dei campi. Tuttavia, proprio come con le altre variabili, puoi rendere mutabile un'istanza di struct aggiungendo la parola chiave mut quando la dichiari.
Quando dichiari mutabile un’istanza di struct, puoi modificarne qualsiasi campo usando la notazione con il punto:
let mut player = Player {
name: String::from("Alice"),
score: 0,
};
player.score = 100; // Questo funziona perché player è mutabileSenza la parola chiave mut, tentare di modificare un campo causerebbe un errore di compilazione. La mutabilità si applica all’intera istanza della struct: non puoi rendere mutabili singoli campi lasciando gli altri immutabili.
Sfida
FacileRiceverai quattro input: un nome del giocatore, un punteggio iniziale (come intero), un punteggio bonus da aggiungere (come intero) e una modifica finale del punteggio (come intero). Definisci una struct Player con due campi: name di tipo String e score di tipo i32. Crea un’istanza mutabile di questa struct, quindi modifica più volte il campo del punteggio usando i valori di input.
Requisiti:
- Definisci una struct
Playercon i campi:name: Stringescore: i32 - Leggi il primo input come nome del giocatore
- Leggi il secondo input e convertilo in
i32per il punteggio iniziale - Crea un’istanza mutabile della struct
Playercon questi valori - Leggi il terzo input e convertilo in
i32per il punteggio bonus - Aggiungi il punteggio bonus al punteggio attuale del giocatore usando la notazione con il punto
- Leggi il quarto input e convertilo in
i32per la modifica finale - Aggiungi la modifica finale al punteggio attuale del giocatore
- Stampa le informazioni del giocatore nel formato esatto mostrato di seguito
Input:
- Prima riga: nome del giocatore (ad es.,
Alice) - Seconda riga: punteggio iniziale come intero (ad es.,
50) - Terza riga: punteggio bonus come intero (ad es.,
30) - Quarta riga: modifica finale come intero (ad es.,
20)
Output:
- Prima riga:
Player: [name] - Seconda riga:
Final Score: [score]
Provalo tu
use std::io;
// TODO: Definisci qui la struct Player con i campi name e score
fn main() {
// Leggi il nome del giocatore
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// Leggi il punteggio iniziale
let mut initial_score = String::new();
io::stdin().read_line(&mut initial_score).expect("Failed to read line");
let initial_score: i32 = initial_score.trim().parse().expect("Invalid number");
// Leggi il punteggio bonus
let mut bonus = String::new();
io::stdin().read_line(&mut bonus).expect("Failed to read line");
let bonus: i32 = bonus.trim().parse().expect("Invalid number");
// Leggi la correzione finale
let mut adjustment = String::new();
io::stdin().read_line(&mut adjustment).expect("Failed to read line");
let adjustment: i32 = adjustment.trim().parse().expect("Invalid number");
// TODO: Crea un'istanza mutabile di Player
// TODO: Aggiungi il punteggio bonus al punteggio del giocatore
// TODO: Aggiungi la correzione finale al punteggio del giocatore
// TODO: Stampa l'output 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'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 finaleEsercitati da solo: Compilatore Rust online