I den här artikeln kommer du att lära dig mer om när du konstruerar i Kotlin med hjälp av olika exempel.
Kotlin när konstruera
Den when
konstruktion i Kotlin kan ses som en ersättning för Java switch uttalande. Den utvärderar en kodsektion bland många alternativ.
Exempel: Enkelt när uttryck
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") )
När du kör programmet blir resultatet ungefär som:
Ange operatören antingen +, -, * eller / * resultat = 60
Programmet ovan tar en inmatningssträng från användaren (Rekommenderad läsning: Få stränginmatning från användaren i Kotlin). Antag att användaren angav *
. I det här fallet a * b
utvärderas uttrycket och värdet tilldelas variabelt resultat.
Om inget av grenvillkoren uppfylls (användar in något annat än +
, -
* eller /
), else
gren utvärderas.
I exemplet ovan använde vi when
som ett uttryck. Det är dock inte obligatoriskt att använda when
som ett uttryck. Till exempel,
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") ) )
När du kör programmet blir resultatet ungefär som:
Ange operatör antingen +, -, * eller / - 12 - 5 = 7
Här when
är inte ett uttryck (returvärdet från when
tilldelas ingenting). I det här fallet är else
filialen inte obligatorisk.
Få möjligheter
Kombinera två eller flera grenförhållanden med ett komma. Till exempel,
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.") ) )
När du kör programmet blir resultatet:
n är ett negativt heltal större än 3.
Kontrollera värdet i intervallet. Till exempel,
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)") ) )
När du kör programmet blir resultatet:
Ett positivt tal mellan 10 och 100 (inklusive)
Kontrollera om ett värde är av en viss typ.
För att kontrollera om ett värde är av en viss typ under körning kan vi använda är och! Är operatör. Till exempel,
när (x) (är Int -> print (x + 1) är String -> print (x.längd + 1) är IntArray -> print (x.sum ()))
Använd uttryck som grenvillkor. Till exempel,
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.") ) )
När du kör programmet blir resultatet:
Bingo! Det är elva.