Kotlin 为什么我的功能与接收器不兼容
我发现在test()的调试过程中从未调用B中的函数init,我的代码怎么了?这行代码: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
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!