小编And*_*hov的帖子

Kotlin 中内部类的变量阴影:如何解析变量?

我在 Kotlin 中有以下代码片段。我喜欢这样的代码难题,但这里的结果对我来说太出乎意料了。有人可以描述我为什么打印1而不是打印2吗?

由于 Java 中禁止阴影 - 看起来我完全不明白它在 Kotlin 中是如何工作的。

fun main() {
    var a = 1
    class A {
        var a = 2

        fun foo() = a
    }

    println(A().foo())
}
Run Code Online (Sandbox Code Playgroud)

============ 奖金 ============

有趣的是,当您var a = 1在类声明后移动时以下代码工作正常并打印2

fun main() {
    
    class A {
        var a = 2

        fun foo() = a
    }

    var a = 1
    println(A().foo())
}
Run Code Online (Sandbox Code Playgroud)

UPD:看起来 Kotlin 突然决定像 C++ 一样玩并且有未定义的行为:D

科特林规格use this with caution, …

java shadowing kotlin

5
推荐指数
1
解决办法
70
查看次数

标签 统计

java ×1

kotlin ×1

shadowing ×1