gpt4 book ai didi

Kotlin:如何使用第一个参数的默认值进行函数调用并为第二个参数传递一个值?

转载 作者:IT老高 更新时间:2023-10-28 13:35:30 24 4
gpt4 key购买 nike

当您想指定第二个参数的值时,我想知道如何使用默认参数调用函数。在下面的简单示例中,我展示了 addTwo() 接受两个参数。 'first' 参数有一个默认值,但 'second' 没有。我如何调用这个函数来指定我想使用“first”的默认值和“second”的给定值 2?

调用 addTwo(2) 会引发错误。

fun main(args: Array<String>) {
var sum = addTwo(1,2) // works fine
var nextSum = addTwo(2) // ERROR: No value passed for parameter second
}

fun addTwo(first: Int = 0, second: Int): Int {
return first + second
}

最佳答案

这是一个错误,因为 Kotlin 不知道您为什么省略了第二个参数。 first 可以默认,但second 不能。因此,当您只传递一个参数时,它是参数first。错误消息准确地说明了问题所在:

no value passed for parameter second

您必须使用 named arguments 调用电话对于要留空的第一个默认参数之后的任何内容。对于您的情况,这将是:

addTwo(second = 2) // first defaulted to 0

如果你的默认参数是另一个顺序,你的调用就可以了。

fun addTwo(first: Int, second: Int = 0): Int{
return first + second
}

addTow(2) // no error, second defaulted to 0

如果您的两个参数的数据类型不同,您会看到不同的不太清楚的错误,让您知道第一个参数 (Int) 的类型是预期的,而不是第二个(以下示例中的日期):

fun something(first: Int = 0, second: Date): Date { ... }

something(Date()) // ERROR: Type mismatch: inferred type is java.util.Date but kotlin.Int was expected

注意: 您可能会遇到与 vararg 相同的问题:

Only one parameter may be marked as vararg. If a vararg parameter is not the last one in the list, values for the following parameters can be passed using the named argument syntax

关于Kotlin:如何使用第一个参数的默认值进行函数调用并为第二个参数传递一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34862949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com