我是一个 Kotlin 新手,正在尝试在回调函数内部删除回调实例。
我的目标类似于以下代码。
private val myCallback = SomeInterfaceType {
if(it.something) {
someObject.removeListener(this@SomeInterfaceType)
}
}
当然,如果它可以编译,我就不会在这里发问了。所以我想问,如何从接口实例中删除回调函数?
编辑:错误是“推断类型为X,但期望类型为Y”。
编辑2:我刚意识到我问错了问题,与接口类似但并不是完全一样。
我使用的对象具有以下构造器/接口: public open class Watcher public constructor(call: (T) -> kotlin.Unit)
因此,实际上我试图从call: (T) -> kotlin.Unit中引用Watcher,以删除监听器。
这是否可能?
someObject.removeListener(this)
。请查看zsmb13的答案。 - IntelliJ Amiya