函数用于将大型程序分解为更小、更模块化的块。例如,您需要根据用户输入创建并着色一个圆。您可以创建两个函数来解决这个问题
createCircle()
函数colorCircle()
函数
将复杂程序分解为更小的组件使我们的程序更加有组织和易于管理。
此外,它还可以避免重复并使代码可重用。
函数类型
根据函数是由用户定义还是可用在标准库中,有两种函数
- Kotlin 标准库函数
- 用户定义的函数
Kotlin 标准库函数
标准库函数是 Kotlin 中内置的、可直接使用的函数。例如,
print()
是一个库函数,用于将消息打印到标准输出流(监视器)。sqrt()
返回数字的平方根(Double
值)
fun main(args: Array<String>) {
var number = 5.5
print("Result = ${Math.sqrt(number)}")
}
运行程序后,输出将是
Result = 2.345207879911715
这是供您探索的Kotlin标准库链接。
用户定义的函数
如前所述,您可以自己创建函数。此类函数称为用户定义的函数。
如何在 Kotlin 中创建用户定义的函数?
在使用(调用)函数之前,需要先定义它。
下面是如何在 Kotlin 中定义函数
fun callMe() { // function body }
要在 Kotlin 中定义函数,需要使用 fun
关键字。然后是函数名称(标识符)。这里,函数名称为 callMe。
在上面的程序中,括号 ( )
是空的。这意味着该函数不接受任何参数。您将在本文后面学习参数。
花括号 { }
中的代码是函数体。
如何调用函数?
您必须调用函数才能运行函数体内的代码。方法如下
callme()
此语句调用之前声明的 callMe()
函数。

示例:简单的函数程序
fun callMe() {
println("Printing from callMe() function.")
println("This is cool (still printing from inside).")
}
fun main(args: Array<String>) {
callMe()
println("Printing outside from callMe() function.")
}
运行程序后,输出将是
Printing from callMe() function. This is cool (still printing from inside). Printing outside from callMe() function.
上面代码中的 callMe()
函数不接受任何参数。
同样,该函数也不返回值(返回类型为 Unit
)。
让我们看另一个函数示例。该函数将接受参数并返回一个值。
示例:使用函数相加两个数
fun addNumbers(n1: Double, n2: Double): Int {
val sum = n1 + n2
val sumInteger = sum.toInt()
return sumInteger
}
fun main(args: Array<String>) {
val number1 = 12.2
val number2 = 3.4
val result: Int
result = addNumbers(number1, number2)
println("result = $result")
}
运行程序后,输出将是
result = 15
带参数和返回值的函数如何工作?
这里,两个类型为 Double
的参数 number1 和 number2 在函数调用期间传递给 addNumbers()
函数。这些参数称为实际参数。
result = addNumbers(number1, number2)
参数 n1 和 n2 在函数定义中接受传递的参数。这些参数称为形式参数(或参数)。

在 Kotlin 中,参数用逗号分隔。另外,形式参数的类型必须显式指定。
请注意,实际参数和形式参数的数据类型必须匹配,即第一个实际参数的数据类型应与第一个形式参数的类型匹配。同样,第二个实际参数的类型必须与第二个形式参数的类型匹配,依此类推。
这里,
return sumInteger
是 return 语句。此代码会终止 addNumbers()
函数,程序的控制权会跳转到 main()
函数。
在程序中,sumInteger 从 addNumbers()
函数返回。该值赋给变量 result。

注意,
sumInteger
和 result 都属于Int
类型。- 函数的返回类型在函数定义中指定。
// return type is Int fun addNumbers(n1: Double, n2: Double): Int { ... .. ... }
如果函数不返回值,则其返回类型为 Unit
。如果返回类型为 Unit
,则在函数定义中指定返回类型是可选的。
示例:使用函数显示姓名
fun main(args: Array<String>) {
println(getName("John", "Doe"))
}
fun getName(firstName: String, lastName: String): String = "$firstName $lastName"
运行程序后,输出将是
John Doe
这里,getName()
函数接受两个 String
参数,并返回一个 String
。
如果函数返回单个表达式(如上面的示例),则可以省略函数体的花括号 { }
,并在 =
符号后指定函数体。
在这种情况下,可以省略显式声明返回类型,因为编译器可以推断出返回类型。在上面的示例中,您可以将
fun getName(firstName: String, lastName: String): String = "$firstName $lastName"
替换为
fun getName(firstName: String, lastName: String) = "$firstName $lastName"
这只是 Kotlin 中函数的简要介绍。与函数相关的推荐文章
- Kotlin 内联函数
- Kotlin 中缀函数
- Kotlin 函数作用域
- Kotlin 默认参数和命名参数
- Kotlin 递归
- Kotlin 尾递归函数
- Kotlin 扩展函数
- Kotlin 高阶函数与 Lambda 表达式