如何创建包级别的函数



我正在阅读Kotlin参考指南,其中一部分说:

在Kotlin中,与Java或C#不同,类没有静态方法。在大多数情况下,建议只使用包级别的函数。

如何创建包级别的函数?

来自参考:

源文件的所有内容(如类和函数(都包含在声明的包中。

因此,只需创建一个这样的源文件:

package my.pkg
fun f0()=0
fun f1()=1

我们可以声明名为f0f1的函数对my.pkg包直接可见。然后可以导入这些函数,并将其与类类似地使用:

import my.pkg.f0
import my.pkg.f1

或者,使用*语法:

import my.pkg.*

包级函数

包级别的函数也称为顶级函数。它们直接在文件中声明,而不为它们创建任何类。它们通常是独立于任何类的实用函数:

UserUtils.kt

package com.app.user
fun getAllUsers() { }
fun getProfileFor(userId: String) { }

用法:

import com.app.user.getProfileFor
val userProfile = getProfileFor("34")

您不需要手动编写import语句,只需键入函数名,自动导入即可完成其工作。


具有类的包级别函数

当函数与一个类有某种关联时,在同一文件中,在类的上方定义它们:

用户.kt

package com.app.user   
fun getAllUsers() { }
fun getProfileFor(userId: String) { }
data class User(val id: String, val name: String)

用法:

import com.app.user.getAllUsers
val userList = getAllUsers()

companion object

当函数与类密切相关时,在companion object:中定义它们

用户.kt

data class User(val id: String, val name: String) {
    companion object {
        fun getAll() { }
        fun profileFor(userId: String) { }
    }
}

用法:

import com.app.user.User
val userProfile = User.profileFor("34")

就是这样!

最新更新