在 Android 应用程序中声明 Kotlin 扩展函数的位置

And*_*Dev 6 android kotlin kotlin-extension

假设我想将以下代码作为可重用的组件:

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // 'this' corresponds to the list
    this[index1] = this[index2]
    this[index2] = tmp
}
Run Code Online (Sandbox Code Playgroud)

我想在我的应用程序中的任何地方使用它,如下所示:

val l = mutableListOf(1, 2, 3)
l.swap(0, 2)
Run Code Online (Sandbox Code Playgroud)

如果我错了,请纠正我,但我相信函数扩展声明可以存在于类之外。那么在 Android 应用程序中,我应该把这个声明放在哪里?或者它甚至重要吗?compile 是否只编译代码,而不管扩展在哪里声明并使其可在全局范围内重用,还是必须使其成为类的一部分?

Ser*_*gey 7

您可以创建一些文件,例如ListExt.kt您想要的任何位置(例如在 package 中main_package_name/util/ListExt.kt)并将扩展功能放在那里,它将在整个项目中可用。所以ListExt.kt文件的内容可以是:

package main_package_name.util

fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
    val tmp = this[index1] // 'this' corresponds to the list
    this[index1] = this[index2]
    this[index2] = tmp
}

// other extension functions on the Lists
Run Code Online (Sandbox Code Playgroud)