【发布时间】:2019-03-01 19:30:49
【问题描述】:
我有点 kotlin 新手,我正在尝试删除回调本身中的回调实例。
我想要实现的功能类似于以下代码。
private val myCallback = SomeInterfaceType {
if(it.something) {
someObject.removeListener(this@SomeInterfaceType)
}
}
当然它不会编译,否则我不会在这里问。所以我问,如何从接口的实例中删除回调?
编辑: 错误是“推断类型为 X,但应为 Y。
编辑 2: 我刚刚意识到我问错了问题,它与它相似,但不完全是一个接口。
我正在使用的对象具有以下构造函数/接口
public open class Watcher<T> public constructor(call: (T) -> kotlin.Unit)
所以实际上我正在尝试从 call: (T) -> kotlin.Unit 内部引用 Watcher 以删除侦听器。
这可能吗?
【问题讨论】:
-
“当然它不能编译” 那么您收到的完整、准确错误消息是什么?
-
someObject.removeListener(this)。检查zsmb13的答案