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

标签 kotlin

在文档中,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

最佳答案

range 构造中使用的 x 遮蔽了 val x = 6 - 这是两个不同的两个不同作用域中的变量。

您可以通过以下方式亲自查看:

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

println(x)

最后一次调用将打印原始值 - 6

关于kotlin - for范围中的 `val`不是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45692122/

相关文章:

Android Studio 3/Kotlin 代码覆盖率

android - 如何在 Kotlin 中获取协程的名称?

android - 如何在 Android 中只允许一个特定 fragment 同时具有纵向和横向方向?

kotlin - 我应该使用哪些序列化依赖项?

java - 安装Android Carbon图书馆的正确方法是什么?

gradle - 如何在Kotlin + gradle项目中实现架构规则?

java - Jacoco 在 kotlin 的测试中没有在 Kotlin 和 Java maven 项目中找到 Kotlin 文件覆盖率

android - 向 Android Kotlin 类添加可选参数

kotlin - Kotlin如何允许在Java时间对象上使用减号运算符

android - invalidateOptionsMenu() 已弃用