如何在 Kotlin 中为 Array 的 Companion 对象编写扩展方法?

ice*_*000 3 kotlin

正如我们所知(在这个问题中提到,无数人写了相同的答案),我们可以为伴随对象使用扩展方法,使某些东西看起来像“静态扩展”。

但是当我尝试这个时kotlin.Array,我失败了:

operator fun <T> Array<T>.Companion.invoke() {
}
Run Code Online (Sandbox Code Playgroud)

上面的代码导致此错误:

图片

那么Arrays 有伴生对象吗?如果不是,我怎样才能为Arrays制作“静态扩展” ?

编辑:

inline operator fun <reified T> Array<T>.Companion.invoke() {
}
Run Code Online (Sandbox Code Playgroud)

这段代码也失败了。

Tod*_*odd 5

您目前无法在 Kotlin 中执行此操作。在这里添加这个的核心问题是kotlin.Array当前没有伴随对象,并且您不能在不存在的伴随对象上添加扩展。

根据这个线程,没有办法向不存在的伴生对象添加扩展函数,但人们要求它。

我能找到的那个线程中的最佳答案来自@yole:

此功能不在 Kotlin 1.2 的路线图上;我们还没有为后续版本做任何规划。

编辑:我找到了KT-11968,它似乎涵盖了这个案例并且其他人对此有一些兴趣。也许游说将其包含在未来的某个版本中?请注意,我发现了其他几个似乎符合此描述但都标记为KT-11968重复的问题,所以我认为这是一个赞成/游说的问题。