删除 kotlin 中的“this”回调

2023-11-23

我是一个 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(使用前将#替换为@)

删除 kotlin 中的“this”回调 的相关文章

随机推荐