编辑这个页面须要登录或更高权限!

Kotlin 默认和命名参数

在本文中,您将在示例的帮助下了解默认参数和命名参数。

Kotlin 默认参数

在Kotlin中,您可以为函数定义中的参数提供默认值。

如果通过传递的参数调用该函数,则将这些参数用作参数。但是,如果在不传递参数的情况下调用该函数,则会使用默认参数。

默认参数如何工作?

一:传递所有参数

两个参数都传递给函数

函数foo()有两个参数。参数提供有默认值。但是,foo()通过在上述程序中传递两个参数来调用。因此,不使用默认参数。

在foo()函数中,letter 和 number的值分别为'x' 和 2。

二:未传递所有参数,只传一个参数

没有将所有参数传递给函数

在这里,只有一个(第一个)参数传递给foo()函数。 因此,第一个参数使用传递给函数的值。 但是,第二个参数 number 将采用默认值,因为在函数调用期间未传递第二个参数。

在foo()函数中,letter和number的值分别为 'y' 和 15。

三:未传递任何参数

没有参数传递给函数

在这里,在不传递任何参数的情况下调用foo()函数。 因此,这两个参数都使用其默认值。

在foo()函数中,letter 和 number 的值分别为 'a' 和 15。

示例:Kotlin 默认参数

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}

fun main(args: Array<String>) {
    println("没有传递参数时的输出:")
    displayBorder()

    println("\n\n'*' 作为第一个参数.")
    println("传递第一个参数时的输出:")
    displayBorder('*')

    println("\n\n'*' 用作第一个参数.")
    println("5用作第二个参数.")
    println("同时传递两个参数时的输出:")
    displayBorder('*', 5)

}

运行该程序时,输出为:

没有传递参数时的输出:
===============

'*' 作为第一个参数.
传递第一个参数时的输出:
***************

'*' 作为第一个参数.
5作为第二个参数.
同时传递两个参数时的输出:
*****

Kotlin 命名参数

在讨论命名参数之前,让我们考虑对上面的代码进行一些修改:

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}

fun main(args: Array<String>) {
    displayBorder(5)
}

在这里,我们尝试将第二个参数传递给displayBorder()函数,并对第一个参数使用默认参数。但是,此代码将给出一个使用错误。这是因为编译器认为我们试图为字符(Char类型)提供5(Int值)。

为了解决这种情况,可以使用命名参数。方法如下:

示例:Kotlin 命名参数

fun displayBorder(character: Char = '=', length: Int = 15) {
    for (i in 1..length) {
        print(character)
    }
}

fun main(args: Array<String>) {
    displayBorder(length = 5)
}

运行该程序时,输出为:

=====

在上述程序中,我们使用命名实参(length = 5)来指定length函数定义中的参数应采用此值(与实参的位置无关)。

Kotlin中的命名参数

第一个参数字符使用程序中的默认值 '='。