English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sintassi di base di Rust

Variabile, tipo di base, funzione, commento e flusso di controllo, queste sono quasi concetti di programmazione che ogni linguaggio di programmazione ha.

Questi concetti di base esisteranno in ogni programma Rust e impararli in anticipo ti permetterà di imparare l'uso di Rust più rapidamente.

Variabile

Deve essere chiarito prima di tutto che Rust è un linguaggio a tipo forte, ma ha la capacità di giudicare automaticamente il tipo delle variabili. Questo può essere confuso con i linguaggi a tipo debole.

Per dichiarare una variabile, è necessario utilizzare la parola chiave let. Ad esempio:

let a = 123;

Sviluppatori che hanno studiato solo JavaScript sono sensibili a questa frase, mentre quelli che hanno studiato solo il linguaggio C non la capiscono.

Dopo questa dichiarazione, le seguenti tre righe di codice sono proibite:

a = "abc";
a = 4.56; 
a = 456;

L'errore nella prima riga è che dopo aver dichiarato a come 123, a è stato determinato come numero intero e non può essere assegnato un valore di tipo stringa.

L'errore nella seconda riga è che c'è una perdita di precisione nell'autoconversione dei numeri, il linguaggio Rust non permette conversioni automatiche dei tipi di dati con perdita di precisione.

L'errore nella terza riga è che a non è una variabile mutabile.

Le prime due errori sono facili da capire, ma cosa significa il terzo? Non è a una variabile?

Questo tocca alla progettazione fatta dal linguaggio Rust per la sicurezza a alta concorrenza: nel livello del linguaggio, si cerca di cambiare il meno possibile il valore delle variabili. Quindi il valore di a è immutabile. Tuttavia, questo non significa che a non sia una "variabile" (in inglese "variable"), la documentazione ufficiale chiama questo tipo di variabile "variabile immutabile".

Se una parte del nostro programma esegue un'operazione basandosi sull'ipotesi che un valore non cambierà mai, mentre un'altra parte del nostro codice cambia quel valore, la prima parte del codice potrebbe non funzionare come previsto. A causa di questo, gli errori di questo tipo sono difficili da trovare in seguito. Questo è il motivo per cui il linguaggio Rust è progettato con questo meccanismo.

Naturalmente, rendere una variabile "mutabile" (mutable) richiede solo una parola chiave mut.

let mut a = 123;
a = 456;

Questo programma è corretto.

La differenza tra costanti e variabili immutabili

Se un variabile immutabile è immutabile, non è una costante? Perché si chiama variabile?

Variabili e costanti hanno ancora differenze. In Rust, il seguente programma è legale: }}

let a = 123;
let a = 456;

Ma se a è una costante, non è legale:

const a: i32 = 123;
let a = 456;

Il valore di una variabile può essere "reattato", ma non può essere modificato prima di "reattaccamento", il che garantisce che il compilatore possa inferire logicamente il programma in ogni regione successiva al "reattaccamento". Nonostante Rust abbia la funzione di auto-giudizio del tipo, in alcuni casi specificare il tipo è più comodo:

let a: u64 = 123;

Qui viene dichiarato a come variabile unsigned 64-bit integer, se non viene specificato il tipo, a sarà automaticamente interpretato come variabile integer a 32-bit signed, il che ha un grande impatto sull'intervallo di valori di a.

Riflessione (Shadowing)

Il concetto di riflessione è diverso da "sovrascrittura" (Override) o "sovraccarico" (Overload) nei linguaggi orientati agli oggetti. Riflessione è ciò che viene chiamato "reattaccamento", e il motivo per cui si usa virgolette è per sostituire questo concetto senza averne introdotto il concetto.

Riflessione si riferisce al meccanismo per cui il nome della variabile può essere riutilizzato:

fn main() {
    let x = 5;
    let x = x + 1;
    let x = x * 2;
    println!("Il valore di x è: {}", x);
}

Il risultato dell'esecuzione di questo programma è:

Il valore di x è: 12

Riflessione e assegnazione di variabili mutabili non sono concetti identici. Riflessione si riferisce all'uso di un nome per rappresentare un altro'entità variabile', il cui tipo, proprietà mutabile e valore possono variare. Tuttavia, l'assegnazione di variabili mutabili può solo comportare un cambiamento di valore.

let mut s = "123";
s = s.len();

Questo programma produrrà un errore: non è possibile assegnare un valore intero a una variabile di stringa.