Kotlin 为什么我的功能与接收器不兼容

Kotlin 为什么我的功能与接收器不兼容,kotlin,Kotlin,我发现在test()的调试过程中从未调用B中的函数init,我的代码怎么了?这行代码: class A { var initFunc: B.() -> Unit fun initWith(func: B.() -> Unit) { this.initFunc = func } fun test() { val b = B() b.apply{ initFunc } } } class B { fu

我发现在test()的调试过程中从未调用B中的函数init,我的代码怎么了?

这行代码:

class A {
   var initFunc: B.() -> Unit
   fun initWith(func: B.() -> Unit) {
        this.initFunc = func
    } 
    fun test() {
      val b = B()
      b.apply{ initFunc }
    }
}

class B {
    fun init() {...}
}
...
val a = A()
a.initWith{ init() }
a.test()
不调用函数,它只获取对函数的引用,而不使用它。添加
()
以调用函数

b.apply{ initFunc }   // doesn't do anything
但从技术上讲,如果您只是想更改通话的上下文(接收者),请将
一起使用,而不是
应用

b.apply{ initFunc() } // works!

这一行代码:

class A {
   var initFunc: B.() -> Unit
   fun initWith(func: B.() -> Unit) {
        this.initFunc = func
    } 
    fun test() {
      val b = B()
      b.apply{ initFunc }
    }
}

class B {
    fun init() {...}
}
...
val a = A()
a.initWith{ init() }
a.test()
不调用函数,它只获取对函数的引用,而不使用它。添加
()
以调用函数

b.apply{ initFunc }   // doesn't do anything
但从技术上讲,如果您只是想更改通话的上下文(接收者),请将
一起使用,而不是
应用

b.apply{ initFunc() } // works!