如何创建包级功能?

时间:2016-08-04 23:24:48

标签: function kotlin

我正在阅读the Kotlin Reference Guide,其中一部分说:

  

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

如何创建包级功能?

2 个答案:

答案 0 :(得分:14)

From the reference:

  

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

所以只需创建一个像这样的源文件:

package my.pkg

fun f0()=0
fun f1()=1

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

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

或者,使用*语法:

import my.pkg.*

答案 1 :(得分:2)

包级函数

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

UserUtils.kt

package com.app.user

fun getAllUsers() { }

fun getProfileFor(userId: String) { }

用法:

import com.app.user.getProfileFor

val userProfile = getProfileFor("34")

您不需要手动编写 import 语句,只需输入函数名称,自动导入就会完成它的工作。


带有类的包级函数

当函数与类有些相关时,将它们定义在类的正上方,在同一个文件中:

User.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 中:

User.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")

就是这样!