Что выведет код Junior Основы языка обновлено
when с диапазонами и is
Вопрос
Что выведет код? По строке на каждый вывод.
fun describe(x: Any): String = when (x) {
0 -> "zero"
in 1..9 -> "digit"
is Int -> "int"
is String -> "string of ${x.length}"
else -> "other"
}
fun main() {
println(describe(0))
println(describe(7))
println(describe(42))
println(describe("hey"))
println(describe(2.5))
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: zero, digit, int, string of 3, other. when проверяет ветки сверху вниз и берёт первую подходящую.
Что выведет
zero
digit
int
string of 3
other
Разбор
when проверяет ветки сверху вниз и берёт первую подходящую. 0 совпадает с первой веткой, 7 попадает в диапазон 1..9. 42 не входит в диапазон, но является Int. Для строки срабатывает is String, и благодаря smart cast внутри ветки доступен x.length. 2.5 это Double, он уходит в else.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.