Scala: If…Else

Se siete qui probabilmente ne sapete già abbastanza di programmazione, quindi non credo servano molte parole per dire a cosa serve un blocco if…else. Dedichiamo qualche parola a questo blocco perché ci sono delle differenze sintattiche rispetto ai blocchi if…else con cui siamo abituati a lavorare (anche se il comportamento rimane lo stesso). In particolare qui possiamo avere solo un if seguito, eventualmente, da un else. Non abbiamo a disposizione il ramo else if, ma non tutto è perduto: siccome un else…if è equivalente ad un if all’interno di un blocco else ce la possiamo cavare in questo modo, e il comportamento logico è esattamente lo stesso.

If

La sintassi di un if non è diversa da quella che ci si aspetterebbe:


if (<boolean expression>) <expression>

 

 

Ad esempio:


if( 95 % 2 > 0) println("Non è un numero pari")

L’if di per sé si comporta come un’espressione, quindi restituisce un valore. Il problema però è che non sempre si riesce a determinare il valore esatto. Un esempio:

Qui uno si aspetterebbe che l’if restituisca una stringa, ma l’interprete inferisce che l’espressione potrebbe restituire sia una stringa (in caso l’espressione booleana sia vera) sia Unit (in caso l’espressione sia falsa). L’unico tipo che accomuna String e Unit (come abbiamo visto qui) è Any, quindi l’interprete sceglie Any.

If-Else

Anche qui non ci sono molte differenze rispetto a quello che già sappiamo: se una condizione è vera facciamo qualcosa, altrimenti ne facciamo un’altra (con l’unica differenza degli if-else in cascata che qui diventano annidati).


if(<boolean expression>) <expression>

else <expression>

In questo caso, riprendendo l’esempio di prima, l’interprete riesce a stabilire con certezza che tutto quel ramo restituisce una stringa:

Scala non disponde dell’operatore ternario.

In questo esempio per compattezza (e perché potevamo farlo agevolmente) abbiamo messo i due rami dell’if…else su una singola riga. Se vogliamo (o dobbiamo) mettere le espressioni su più righe possiamo, al solito, usare i blocchi, delimitati da { e }.

 

Pierpaolo Paris

Sono uno dei tanti che sono entrati nel girone infernale di Ingegneria Informatica, e che poi ne è anche uscito. Attualmente lavoro come sviluppatore presso una società di consulenza. Ogni tanto mi diletto con la fotografia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.