for范围中的`val`不是不可变的?

you*_*inz 2 kotlin

在文档中,valassign-once(只读)局部变量.但是,下面是一个for循环,它将值分配x多次.这是一个与C++不同的概念const吗?

fun main(args: Array<String>) {
    val x = 6
    val y = 9
    for (x in 1..y) {
        println("fits in range $x")
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

fits in range 1
fits in range 2
fits in range 3
fits in range 4
fits in range 5
fits in range 6
fits in range 7
fits in range 8
fits in range 9
Run Code Online (Sandbox Code Playgroud)

Grz*_*rek 5

x在所使用的范围构建体遮蔽的val x = 6 -这些都是在两个不同范围的两个不同变量.

您可以通过以下方式看到自己:

val x = 6
val y = 9
for (x in 1..y) {
    println("fits in range $x")
}

println(x)
Run Code Online (Sandbox Code Playgroud)

最后一次通话将打印原始值 - 6