📜  Kotlin默认和命名参数

📅  最后修改于: 2021-01-05 07:24:24             🧑  作者: Mango

Kotlin默认和命名参数

Kotlin默认参数

Kotlin提供了一种在函数定义中分配默认参数(参数)的工具。

如果在没有传递任何参数的情况下调用函数,则默认参数将用作函数定义的参数。并且当一个函数被使用的参数,比通过参数调用用作函数定义参数。

默认参数示例1:在函数调用中不传递任何参数

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()函数调用,函数定义中使用了默认参数。

默认参数示例2:在函数调用中传递一些参数

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()函数使用一个(第一个)参数调用,函数定义的第一个参数是使用传递给该函数的值。第二个参数用作默认参数。

默认参数示例3:在函数调用中传递所有参数

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