正如我们所知(在switch_to.window()
中提到,无数人写同样的答案),我们可以为伴侣对象提供扩展方法,使其看起来像"静态扩展"。
但是当我在kotlin.Array
上尝试此操作时,我失败了:
operator fun <T> Array<T>.Companion.invoke() {
}
上面的代码会导致此错误:
Array
也有伴侣对象吗?如果不是,我该如何为Array
s进行静态扩展?
编辑:
inline operator fun <reified T> Array<T>.Companion.invoke() {
}
此代码也失败了。
答案 0 :(得分:4)
目前你不能在Kotlin这样做。这里添加此问题的核心问题是kotlin.Array
当前没有伴随对象,并且您无法在不存在的伴随对象上添加扩展名。
根据this thread,无法将扩展函数添加到不存在的伴随对象,但人们要求它。
我能找到的那个帖子的最佳答案来自@yole:
此功能不在Kotlin 1.2的路线图中;我们还没有对后续版本进行任何规划。
修改:我找到了KT-11968,这似乎涵盖了这种情况并且引起了其他人的兴趣。也许游说将来包含在未来的某个版本中?请注意,我发现其他几个问题似乎符合此描述,但都标记为KT-11968的重复项,所以我认为这是upvote / lobby的一个。