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

时间:2018-03-11 13:44:34

标签: kotlin

正如我们所知(在switch_to.window()中提到,无数人写同样的答案),我们可以为伴侣对象提供扩展方法,使其看起来像"静态扩展"。

但是当我在kotlin.Array上尝试此操作时,我失败了:

operator fun <T> Array<T>.Companion.invoke() {
}

上面的代码会导致此错误:

image

Array也有伴侣对象吗?如果不是,我该如何为Array s进行静态扩展?

编辑:

inline operator fun <reified T> Array<T>.Companion.invoke() {
}

此代码也失败了。

1 个答案:

答案 0 :(得分:4)

目前你不能在Kotlin这样做。这里添加此问题的核心问题是kotlin.Array当前没有伴随对象,并且您无法在不存在的伴随对象上添加扩展名。

根据this thread,无法将扩展函数添加到不存在的伴随对象,但人们要求它。

我能找到的那个帖子的最佳答案来自@yole:

  

此功能不在Kotlin 1.2的路线图中;我们还没有对后续版本进行任何规划。

修改:我找到了KT-11968,这似乎涵盖了这种情况并且引起了其他人的兴趣。也许游说将来包含在未来的某个版本中?请注意,我发现其他几个问题似乎符合此描述,但都标记为KT-11968的重复项,所以我认为这是upvote / lobby的一个。