官术网_书友最值得收藏!

When clause

when is a pattern matching clause in Kotlin. This helps us to write elegant code when dealing with pattern matching, meaning we can avoid using a lot of if else statements.

Let's write a function that takes an input, the type of which is not known. Any is used to indicate this and a when block is used to handle different patterns.

Consider the code for 10_when.kts:

fun processInput(input: Any) {
when(input) {
10 -> println("It is 10")
98,99 -> println("It is 98 or 99")
in 101 .. 120 -> println("More than 100")
is String -> println("This is ${input} of length ${input.length}")
else -> println("Not known")
}
}
processInput(10)
processInput(98)
processInput(99)
processInput(102)
processInput("hey there")
processInput(Thread())

The output is as follows:

Alongside the pattern matching, we can also perform type checking using the when block:

is String -> println("This is ${input} of length ${input.length}")

Note that the argument input is of the Any type. After type checking, the input is automatically cast to String, and we can use the length property, which is defined in the String class. The Kotlin language does the auto-typecasting for us, so we don't have to do any explicit type casting.

主站蜘蛛池模板: 滦南县| 洛隆县| 米泉市| 五家渠市| 伊金霍洛旗| 四平市| 合山市| 油尖旺区| 延川县| 慈利县| 思南县| 昆明市| 郓城县| 聂荣县| 濉溪县| 金秀| 台山市| 山西省| 罗源县| 太康县| 合作市| 犍为县| 城固县| 平遥县| 雅安市| 和政县| 武威市| 淮北市| 茂名市| 岳池县| 高台县| 青铜峡市| 鄢陵县| 遂宁市| 平江县| 刚察县| 庆城县| 长岭县| 永丰县| 托克托县| 正宁县|