在编程中, 函数是一组执行特定任务的相关语句。
函数用于将大型程序分解为较小的模块化块。例如,您需要根据用户的输入来创建圆圈并为其着色。您可以创建两个函数来解决此问题:
-
createCircle()
函数 -
colorCircle()
函数
将复杂的程序划分为较小的组件,可以使我们的程序更有条理和更易于管理。
此外,它避免重复并使代码可重用。
功能类型
根据用户定义的函数还是标准库中可用的功能,有两种类型的功能:
- Kotlin标准库功能
- 用户定义的功能
Kotlin标准库功能
标准库函数是Kotlin中的内置函数,可以随时使用。例如,
-
print()
是一个库函数 ,可将消息打印到标准输出流(监视器)。 -
sqrt()
返回数字的平方根(Double
值)
fun main(args: Array) {
var number = 5.5
print("Result = ${Math.sqrt(number)}")
}
运行该程序时,输出为:
Result = 2.345207879911715
这是Kotlin标准库的链接,供您浏览。
用户定义的功能
如前所述,您可以自己创建函数。这些功能称为用户定义功能。
如何在Kotlin中创建用户定义的函数 ?
在使用(调用) 函数,需要先对其进行定义。
在Kotlin中定义函数的方法如下:
fun callMe() {
// function body
}
要在Kotlin中定义函数 ,请使用fun
关键字。然后是函数的名称(标识符)。在这里, 函数的名称为callMe 。
在上述程序中,括号( )
为空。这意味着此函数不接受任何参数。您将在本文的后面部分了解参数。
花括号{ }
的代码是函数的主体。
如何调用函数?
你要调用函数的函数体中运行代码。这是如何做:
callme()
该语句调用callMe()
声明的callMe()
函数 。
示例:简单功能程序
fun callMe() {
println("Printing from callMe() function.")
println("This is cool (still printing from inside).")
}
fun main(args: Array) {
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) {
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) {
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