Il linguaggio Kotlin è un linguaggio di programmazione che ha parti in comune al Java da cui deriva ma presenta anche caratteristiche simili al C (il padre di tutti i linguaggi di programmazione).
In questo articolo vediamo come strutturare le condizioni:
if-else
when
In kotlin when sostituisce la condizione switch del linguaggio C, inoltre può sostituire anche la condizione if-else.
La stessa struttura con la condizione switch è strutturata in questo modo:
Come si può notare la struttura di when è molto più sintetica, al posto di case: 1 si utilizza 1 ->, al posto di case: 2 si utilizza 2 -> e cos' via.
Mentre al posto di default si utilizza else ->.
L'else finale è necessario perchè se la variabile da sottoporre a condizione (when (x) non assume il valore previsto viene eseguito un codice all'interno di else senza generare degli errori imprevisti.
Se all'interno di ogni evento si deve eseguire più codice basta inserirlo all'interno delle parentesi graffe {} in questo modo:
E' possibile combinare rami multipli all'interno di when separando i casi con la virgola
In questo esempio se la variabile dayOfWeek assume un valore compreso tra 1 e 5 viene restituito il testo Giorno feriale, se assume un valore 6 o 7 viene restituito il testo Fine settimana, altrimenti se assume un valore non previsto dai precedenti casi viene restituito il testo Giorno non valido.
All'interno di when è possibile verificare se una certa variabile è compresa o no in un determinato intervallo di valori.
Viene creato un intervallo utilizzando l'operatore ..
Ad esempio, è possibile creare un intervallo da 1 a 10 utilizzando 1..10 e utilizzare in (incluso) o !in (non incluso)
Inoltre è possibile verificare di che tipo è la variabile sottoposta a condizione, se Int, String, Double, ecc...
La condizione when sostituisce a tutti gli effetti la condizione if-else-if
In questo articolo vediamo come strutturare le condizioni:
if-else
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if (a > b) | |
{ | |
max = a | |
} | |
else | |
{ | |
max = b | |
} |
when
In kotlin when sostituisce la condizione switch del linguaggio C, inoltre può sostituire anche la condizione if-else.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
when (x) | |
{ | |
1 -> y = 10 | |
2 -> y = 20 | |
else -> y = x | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
switch (x) | |
{ | |
case 1: | |
y = 10 | |
break; | |
case 2: | |
y = 20 | |
break; | |
default: | |
y = x | |
break; | |
} |
Mentre al posto di default si utilizza else ->.
L'else finale è necessario perchè se la variabile da sottoporre a condizione (when (x) non assume il valore previsto viene eseguito un codice all'interno di else senza generare degli errori imprevisti.
Se all'interno di ogni evento si deve eseguire più codice basta inserirlo all'interno delle parentesi graffe {} in questo modo:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
when (x) | |
{ | |
1 -> | |
{ | |
//istruzione 1 | |
//istruzione 2 | |
//istruzione 3 | |
} | |
2 -> | |
{ | |
//istruzione 1 | |
//istruzione 2 | |
//istruzione 3 | |
} | |
3 -> | |
{ | |
//istruzione 1 | |
//istruzione 2 | |
//istruzione 3 | |
} | |
else -> | |
{ | |
//istruzione 1 | |
//istruzione 2 | |
//istruzione 3 | |
} | |
} |
E' possibile combinare rami multipli all'interno di when separando i casi con la virgola
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
when(dayOfWeek) | |
{ | |
1, 2, 3, 4, 5 -> println("Giorno feriale") | |
6, 7 -> println("Fine settimana") | |
else -> println("Giorno non valido") | |
} |
All'interno di when è possibile verificare se una certa variabile è compresa o no in un determinato intervallo di valori.
Viene creato un intervallo utilizzando l'operatore ..
Ad esempio, è possibile creare un intervallo da 1 a 10 utilizzando 1..10 e utilizzare in (incluso) o !in (non incluso)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
when(dayOfMonth) { | |
in 1..7 -> println("Siamo nella prima settimana del mese") | |
!in 15..21 -> println("Non siamo nella terza settimana del mese") | |
else -> println("nessuno dei precedenti") | |
} |
Inoltre è possibile verificare di che tipo è la variabile sottoposta a condizione, se Int, String, Double, ecc...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
when(x) { | |
is Int -> println("x è di itpo Int") | |
is String -> println("x è di tipo String") | |
!is Double -> println("x non è di tipo Double") | |
else -> println("nessuno dei precedenti") | |
} |
La condizione when sostituisce a tutti gli effetti la condizione if-else-if
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var number | |
when { | |
number < 0 -> println("Il numero è minore di 0") | |
number % 2 == 0 -> println("il numero è pari") | |
number > 100 -> println("il numero è maggiore di 100") | |
else -> println("None of the above") | |
} |
Commenti
Posta un commento