Kotlin:invoke()和参数化类的问题

时间:2018-11-28 02:27:38

标签: generics kotlin

所以我有一个有趣的问题。我有一个参数化的类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),因此迫使我手动包括该导入。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

您尝试。

class Foo<T> {
     fun invoke(value: T, listener: () -> Unit){
          // doSomething defined elsewhere

          listener.invoke()
     }
}