In questo articolo, imparerai a costruire in Kotlin con l'aiuto di vari esempi.
Kotlin quando Costruisci
Il when
costrutto in Kotlin può essere pensato come un sostituto per Java switch Statement. Valuta una sezione di codice tra molte alternative.
Esempio: Simple when Expression
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() val result = when (operator) ( "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "$operator operator is invalid operator." ) println("result = $result") )
Quando esegui il programma, l'output sarà qualcosa del tipo:
Immettere l'operatore +, -, * o / * risultato = 60
Il programma sopra prende una stringa di input dall'utente (Lettura consigliata: Ottieni input di stringa dall'utente in Kotlin). Supponiamo che l'utente sia entrato *
. In questo caso, l'espressione a * b
viene valutata e il valore viene assegnato alla variabile risultato.
Se nessuna delle condizioni di filiale sono soddisfatti (utente è entrato nulla, tranne +
, -
, *, o /
), else
ramo viene valutato.
Nell'esempio sopra, abbiamo usato when
come espressione. Tuttavia, non è obbligatorio utilizzarlo when
come espressione. Per esempio,
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() when (operator) ( "+" -> println("$a + $b = $(a + b)") "-" -> println("$a - $b = $(a - b)") "*" -> println("$a * $b = $(a * b)") "/" -> println("$a / $b = $(a / b)") else -> println("$operator is invalid") ) )
Quando esegui il programma, l'output sarà qualcosa del tipo:
Immettere l'operatore +, -, * o / - 12-5 = 7
Qui when
non è un'espressione (il valore restituito da when
non è assegnato a nulla). In questo caso la else
filiale non è obbligatoria.
Poche possibilità
Combina due o più condizioni di ramo con una virgola. Per esempio,
fun main(args: Array) ( val n = -1 when (n) ( 1, 2, 3 -> println("n is a positive integer less than 4.") 0 -> println("n is zero") -1, -2 -> println("n is a negative integer greater than 3.") ) )
Quando esegui il programma, l'output sarà:
n è un numero intero negativo maggiore di 3.
Verificare il valore nell'intervallo. Per esempio,
fun main(args: Array) ( val a = 100 when (a) ( in 1… 10 -> println("A positive number less than 11.") in 10… 100 -> println("A positive number between 10 and 100 (inclusive)") ) )
Quando esegui il programma, l'output sarà:
Un numero positivo compreso tra 10 e 100 (inclusi)
Controlla se un valore è di un tipo particolare.
Per controllare se un valore è di un tipo particolare in runtime, possiamo usare is and! Is operator. Per esempio,
quando (x) (è Int -> print (x + 1) è String -> print (x.length + 1) è IntArray -> print (x.sum ()))
Usa le espressioni come condizione del ramo. Per esempio,
fun main(args: Array) ( val a = 11 val n = "11" when (n) ( "cat" -> println("Cat? Really?") 12.toString() -> println("Close but not close enough.") a.toString() -> println("Bingo! It's eleven.") ) )
Quando esegui il programma, l'output sarà:
Bingo! Sono le undici.