Rya*_*ert 16
源文件的所有内容(如类和函数)都包含在声明的包中.
所以只需创建一个像这样的源文件:
package my.pkg
fun f0()=0
fun f1()=1
Run Code Online (Sandbox Code Playgroud)
我们可以声明命名的函数f0并f1直接对my.pkg包可见.然后可以导入这些函数并使用类似于类:
import my.pkg.f0
import my.pkg.f1
Run Code Online (Sandbox Code Playgroud)
或者,使用*语法:
import my.pkg.*
Run Code Online (Sandbox Code Playgroud)
包级函数也称为顶级函数。它们直接在文件内声明,无需为它们创建任何类。它们通常是独立于任何类的实用函数:
UserUtils.kt
package com.app.user
fun getAllUsers() { }
fun getProfileFor(userId: String) { }
Run Code Online (Sandbox Code Playgroud)
用法:
import com.app.user.getProfileFor
val userProfile = getProfileFor("34")
Run Code Online (Sandbox Code Playgroud)
您不需要手动编写import语句,只需键入函数名称,自动导入就会完成它的工作。
当函数与类有些相关时,将它们定义在同一文件中的类之上:
用户.kt
package com.app.user
fun getAllUsers() { }
fun getProfileFor(userId: String) { }
data class User(val id: String, val name: String)
Run Code Online (Sandbox Code Playgroud)
用法:
import com.app.user.getAllUsers
val userList = getAllUsers()
Run Code Online (Sandbox Code Playgroud)
companion object当函数与类密切相关时,将它们定义在 a 中companion object:
用户.kt
data class User(val id: String, val name: String) {
companion object {
fun getAll() { }
fun profileFor(userId: String) { }
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
import com.app.user.User
val userProfile = User.profileFor("34")
Run Code Online (Sandbox Code Playgroud)
就是这样!