【发布时间】:2019-05-24 11:56:14
【问题描述】:
在 Kotlin 中,我们无法创建实现 2 个具有不同签名的 lambda 的类,如下所示:
class Test<T> : (T) -> Unit, () -> T {
...
}
出现以下错误:
'Function' 的类型参数 R 的值不一致:Unit, T
我理解它发生的原因:所有 lambda 都是FunctionN 接口,所有FunctionN 接口都扩展了一些称为Function 的标记接口,它不能被调用。但最后一个也是上面提到的泛型冲突和错误的根本原因。
我的问题可能是 Kotlin 团队:有什么理由为什么所有 FunctionN 扩展 Function 接口?也许一些内部/字节码的东西对我们来说并不明显,但对底层的性能进行了一些棘手的优化。
【问题讨论】:
-
也许您想在discuss.kotlinlang.org 上问这个问题并交叉链接两者?
标签: kotlin