类变量和局部变量对智能转换的影响


#1

代码如下:

class B {
    operator fun invoke() {
        println("class B")
    }
}

class A(val b: B?) {
    fun a() {
        if (b != null) {
            b.invoke()
            b()
        }
    }
}

fun a(b: B?) {
    if (b != null) {
        b.invoke()
        b()
    }
}

fun b() {
    println("function b")
}

fun main() {
    a(B())
    A(B()).a()
}

为什么这段代码的输出会是下面这样呢?

class B
class B
class B
function b

#2

静态绑定优先级问题。别跟这个较劲了


#3

跟a+++++a这种问题较啥劲


京ICP备16022265号-2 Kotlin China 2017 - 2018