在 Android 应用程序中的何处声明 Kotlin 扩展函数
Where to declare Kotlin extension functions in an Android app
假设我有以下代码,我想将其作为可重复使用的组件:
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
}
我想在我的应用中的任何地方使用它,如下所示:
val l = mutableListOf(1, 2, 3)
l.swap(0, 2)
如果我错了请纠正我,但我相信函数扩展声明可以存在于 class 之外。所以在 Android 应用程序中,我应该把这个声明放在哪里?或者它甚至重要吗?编译是否只编译代码,而不管扩展在哪里声明并使其在全球范围内可重用,还是我必须使其成为 class 的一部分?
年,扩展函数可以在任何地方声明。
对于通用实用程序的功能(关于列表),我应该将它们放在 /company/app/util/lists.kt
.
之类的下面
您可以创建一些文件,例如ListExt.kt
任何你想要的地方(例如在包 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
它们可以在任何地方,但在同一个文件 and/or 包中为特定 class 扩展似乎是有意义的。例如,String 的扩展可以在 StringExtensions.kt 中,并且可以选择在扩展包中。
要使扩展成为全局扩展,您需要将其放在 class
之外
package com.extension.globalcontext
fun <T> MutableList<T>.swap(index1: Int, index2: Int)
要调用它们,您需要导入包
import com.extension.globalcontext
l.swap(0, 2)
假设我有以下代码,我想将其作为可重复使用的组件:
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
}
我想在我的应用中的任何地方使用它,如下所示:
val l = mutableListOf(1, 2, 3)
l.swap(0, 2)
如果我错了请纠正我,但我相信函数扩展声明可以存在于 class 之外。所以在 Android 应用程序中,我应该把这个声明放在哪里?或者它甚至重要吗?编译是否只编译代码,而不管扩展在哪里声明并使其在全球范围内可重用,还是我必须使其成为 class 的一部分?
年,扩展函数可以在任何地方声明。
对于通用实用程序的功能(关于列表),我应该将它们放在 /company/app/util/lists.kt
.
您可以创建一些文件,例如ListExt.kt
任何你想要的地方(例如在包 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
它们可以在任何地方,但在同一个文件 and/or 包中为特定 class 扩展似乎是有意义的。例如,String 的扩展可以在 StringExtensions.kt 中,并且可以选择在扩展包中。
要使扩展成为全局扩展,您需要将其放在 class
之外package com.extension.globalcontext
fun <T> MutableList<T>.swap(index1: Int, index2: Int)
要调用它们,您需要导入包
import com.extension.globalcontext
l.swap(0, 2)