Pillole di F#: variabili e identificatori

Ogni volta che presento il linguaggio F# a un evento tecnico e spiego che in F# non dobbiamo parlare di “variabili” ma di “identificatori“, perché la definizione di un identificatore associa a quest’ultimo un valore che non è più modificabile, vedo sempre facce sorprese, quasi sconvolte.

Il concetto stravolge le nostre abitudini, ci spaventa e quindi rischia di frenare sul nascere l’apprendimento di questo linguaggio.

In realtà le cose sono più semplici di quelle che sembrano:

  • nei linguaggi che abbiamo utilizzato finora (VB, C#, Java ecc.) la principale istruzione è l’assegnazione di un valore a una variabile. Una variabile può sempre cambiare valore nel corso del programma a meno che non venga preventivamente dichiarata come costante. La norma, quindi, è la mutabilità del valore (variabile), l’eccezione è l’immutabilità del valore (costante);

  • in F# il concetto è esattamente l’opposto: gli identificatori vengono dichiarati e assumono un valore che non cambia più nel corso del programma (immutabili), mentre se vogliamo un identificatore che possa cambiare il valore (mutabile) dobbiamo dichiararlo esplicitamente con la parola riservata  mutable.

Nel linguaggi .NET “classici” (per esempio VB e C#), il concetto di variabile immutabile c’è in un preciso e conosciuto contesto: le stringhe. Una stringa viene definita con un valore ben preciso. Possiamo ridefinire la stringa assegnando un valore diverso, ma in questo caso in memoria succede qualcosa di particolare: la stringa precedente viene “abbandonata” e viene creata una nuova stringa in un’altra posizione di memoria. Non viene modificata la stringa originaria, quindi possiamo considerarla immutabile! Per modificare una variabile stringa senza ridefinirla possiamo, naturalmente, utilizzare un oggetto di tipo StringBuilder.

Vediamo un esempio di identificatori mutabili e immutabili:

// identificatore immutabile let stringA = “Hello” let stringB = “world” let stringC = stringA + ” “ + stringB // identificatore mutabile let mutable stringD = “Hello” stringD <- “Ciao”

Il risultato che otterremo in “F# interactive” (selezionando il codice e premendo la combinazione ALT+INVIO) è il seguente:

val stringA : string = “Hello” val stringB : string = “world” val stringC : string = “Hello world” val mutable stringD : string = “Ciao”

Notate come abbiamo assegnato la stringa “Ciao” alla variabile mutabile (cioè con l’operatore <-). Tenete ben presente questo operatore perché ci torneremo sopra…

Pubblicato il 17 giugno 2015 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: