范围中的`val`不是不可变的吗?
在文档中, val
是分配一次(只读)局部变量 。 但是,下面是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") } }
输出:
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
在范围构造中使用的x
是阴影val x = 6
– 在两个不同的范围内是两个不同的变量。
你可以通过以下方式看到自己:
val x = 6 val y = 9 for (x in 1..y) { println("fits in range $x") } println(x)
最后的呼叫将打印原始值 – 6