ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Kotlin 默认和命名参数 > 原文: [https://www.programiz.com/kotlin-programming/default-named-arguments](https://www.programiz.com/kotlin-programming/default-named-arguments) #### 在本文中,您将在示例的帮助下了解默认参数和命名参数。 ## Kotlin 默认参数 在 Kotlin 中,您可以为函数定义中的参数提供默认值。 如果通过传递的参数调用该函数,则将这些参数用作参数。 但是,如果在不传递参数的情况下调用该函数,则会使用默认参数。 * * * ### 默认参数如何工作? **情况 I:所有参数均传递** * * * ![Both arguments passed to the function](https://img.kancloud.cn/68/90/6890ea39f22b1de7f77a5940afad0d14_405x159.png) 函数`foo()`具有两个参数。 参数提供有默认值。 但是,通过在上述程序中传递两个参数来调用`foo()`。 因此,不使用默认参数。 在`foo()`函数内,`letter`和`num`的值分别为`'x'`和`2`。 **情况 II:未传递所有参数** * * * ![All arguments are not passed to the function](https://img.kancloud.cn/8b/d8/8bd8597813f576258ed2606250ae8ed5_398x156.png) 在此,仅一个(第一个)参数传递给`foo()`函数。 因此,第一个参数使用传递给函数的值。 但是,第二个参数`num`将采用默认值,因为在函数调用期间未传递第二个参数。 在`foo()`函数内,`letter`和`num`的值分别为`'y'`和`15`。 **情况 III:不传递任何参数** * * * ![No arguments passed to the function](https://img.kancloud.cn/2f/93/2f93896ced863012eb6efd2a92f584a2_392x154.png) 在此,不传递任何参数就调用`foo()`函数。 因此,两个参数都使用其默认值。 在`foo()`函数内,`letter`和`num`的值分别为`'a'`和`15`。 * * * ### 示例:Kotlin 默认参数 ```kt fun displayBorder(character: Char = '=', length: Int = 15) { for (i in 1..length) { print(character) } } fun main(args: Array<String>) { println("Output when no argument is passed:") displayBorder() println("\n\n'*' is used as a first argument.") println("Output when first argument is passed:") displayBorder('*') println("\n\n'*' is used as a first argument.") println("5 is used as a second argument.") println("Output when both arguments are passed:") displayBorder('*', 5) } ``` 运行该程序时,输出为: ```kt Output when no argument is passed: =============== '*' is used as a first argument. Output when first argument is passed: *************** '*' is used as a first argument. 5 is used as a second argument. Output when both arguments are passed: ***** ``` * * * ## Kotlin 命名参数 在讨论命名参数之前,让我们考虑对上面的代码进行一些修改: ```kt 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 命名参数 ```kt fun displayBorder(character: Char = '=', length: Int = 15) { for (i in 1..length) { print(character) } } fun main(args: Array<String>) { displayBorder(length = 5) } ``` 运行该程序时,输出为: ```kt ===== ``` 在上面的程序中,我们使用命名参数(`length = 5`)指定函数定义中的`length`参数应采用此值(与参数的位置无关)。 ![Named Arguments in Kotlin](https://img.kancloud.cn/2e/c2/2ec2158a2352707ae08b50267525e4df_527x190.png) 第一个参数`character`使用程序中的默认值`'='`。