Одинаковые имена переменных в Kotlin
Если во внутренней области снова объявить переменную с тем же именем, что снаружи, внутри действует только новая. Внешнее имя на этом участке как бы скрыто.
В main val задает 1, внутри
блока другое val с тем же именем -
2. На экран из блока попадет 2,
после блока снова 1:
fun main() {
val num = 1
if (true) {
val num = 2
println(num)
}
println(num)
}
То же между функцией на уровне файла и
локальной переменной в main. Из main
на экран попадет 10, из show -
20:
val num = 20
fun show() {
println(num)
}
fun main() {
val num = 10
println(num)
show()
}
Изменение внутренней переменной не меняет
внешнюю. После выхода из блока снова видна
старая. На экран попадут 100 и 5:
fun main() {
var score = 5
if (true) {
var score = 100
println(score)
}
println(score)
}
Определите, что выведет программа:
fun main() {
val tag = "a"
if (true) {
val tag = "b"
println(tag)
}
println(tag)
}
Определите, что выведет программа:
val level = 1
fun main() {
val level = 2
println(level)
}