2017-08-15 45 views
2

在文檔中,val分配一次(只讀)局部變量。但是,下面是for循環,它將值分配給x幾次。這與C++ const不同嗎?範圍中的`val`不是不可變的嗎?

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 
+1

變量名稱被遮擋。你發現你不能在循環中引用外部變量'x'。 –

回答

5

範圍構建體中所用的x被遮蔽的val x = 6 - 這些都是在兩個不同範圍的兩個不同變量。

你可以看到自己通過寫

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

println(x) 

的最後一次通話將打印原值 - 6

+1

我在輸入時使用'for'而不是'if'來混淆[這個官方教程](https://kotlinlang.org/docs/reference/basic-syntax.html#using-ranges)。不管怎樣,謝謝! – youngminz