所以我有一个有趣的问题。我有一个参数化的类Foo:
class Foo<T> {
operator fun invoke(value: T) = doSomething(value) // doSomething defined elsewhere
}
而且,我希望能够也仅当T为Unit时才定义不带值的invoke()
,这将调用invoke(Unit)
。我曾尝试在类外定义扩展函数运算符fun Foo<Unit>.invoke() = this.invoke(Unit)
,但无论使用此扩展名是什么,它都要求我包含导入语句,而我正在使用的IDE(Android Studio)不能识别使用快捷方式foo()
调用扩展名(它抱怨缺少value
),因此迫使我手动包括该导入。有更好的方法吗?
答案 0 :(得分:0)
您尝试。
class Foo<T> {
fun invoke(value: T, listener: () -> Unit){
// doSomething defined elsewhere
listener.invoke()
}
}