📅  最后修改于: 2021-01-05 07:24:24             🧑  作者: Mango
Kotlin提供了一种在函数定义中分配默认参数(参数)的工具。
如果在没有传递任何参数的情况下调用函数,则默认参数将用作函数定义的参数。并且当一个函数被使用的参数,比通过参数调用用作函数定义参数。
fun main(args: Array) {
run()
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
输出:
parameter in function definition 5 and x
在上面的程序中,不带参数的run()函数调用,函数定义中使用了默认参数。
fun main(args: Array) {
run(3)
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
输出:
parameter in function definition 3 and x
在上面的程序中,run()函数使用一个(第一个)参数调用,函数定义的第一个参数是使用传递给该函数的值。第二个参数用作默认参数。
fun main(args: Array) {
run(3,'a')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
输出:
parameter in function definition 3 and a
由于所有参数都在run()函数调用中传递,因此函数定义的参数将使用函数调用中传递的参数。
在讨论命名参数之前,让我们在上面的程序中进行一些修改。
例如:
fun main(args: Array) {
run('a')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
输出:
Error: Kotlin: The character literal does not conform to the expected type Int
在这里,我们尝试将参数“ a”从函数调用传递到第二个参数中的函数定义。但是编译器假定为第一个参数(Int类型)传递的参数“ a”(Char类型)会导致程序错误。
为了解决上述问题,使用了命名参数。
命名实参是在函数调用中定义实参名称的实参。为函数调用的参数定义的名称将检查函数定义中的名称并为其分配。
Kotlin命名参数示例
fun main(args: Array) {
run(latter='a')
}
fun run(num:Int= 5, latter: Char ='x'){
print("parameter in function definition $num and $latter")
}
输出:
parameter in function definition 5 and a