我是一个 kotlin 新手,我正在尝试删除回调本身内的回调实例。
我想要实现的目标类似于以下代码。
private val myCallback = SomeInterfaceType {
if(it.something) {
someObject.removeListener(this@SomeInterfaceType)
}
}
当然它不会编译,否则我不会在这里问。所以我想问,如何从接口实例内部删除回调?
edit:错误是“推断类型是 X,但预期是 Y。
edit 2:我刚刚意识到我问错了问题,它与它类似,但不完全是一个接口。
我正在使用的对象具有以下构造函数/接口
public open class Watcher<T> public constructor(call: (T) -> kotlin.Unit)
所以实际上我试图从内部引用观察者call: (T) -> kotlin.Unit
删除监听器。
那可能吗?
您需要使用完整的对象表达引用的语法能够引用实例本身:
private val myCallback = object: SomeInterfaceType() {
override fun onSomeEvent() {
if (it.something) {
someObject.removeListener(this)
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)