我有一个功能
fun foo(
id: String,
vararg values: Int,
){
...
}
还有这样的呼吁
fun bar1(){
foo("id_1")
foo("id_2", 1)
foo("id_3", 1, 2, 3)
}
现在我明白了我需要向 foo 添加一个参数。但我不想破坏现有的调用,所以我尝试使用默认值添加它:
fun foo(
id: String,
attributes: Array<String> = arrayOf("a", "b"),
vararg values: Int,
){
...
}
但
foo("id_2", 1)
foo("id_3", 1, 2, 3)
变得破碎。
有没有办法在不破坏现有调用的情况下添加一个具有默认值的参数?
我是 kotlin 的新手,但你今天让我学到了这一点,谢谢!正在使用 kotlin 游乐场。
您询问的是在不破坏现有调用的情况下添加一个具有默认值的参数的方法。
您可以通过在 vararg 后使用属性来实现这一点,例如
但是等等,这会引发有关类型的错误,因为您最后想要传达的 foo() 属性也将被视为 vararg,因此要使用此代码,我们必须像这样调用该函数:
无论需要什么,您都可以添加
,attributes=loremipsum
,如果不需要,则保留。选项 1:
如果将新参数移至末尾,则可以:
但这样调用就有点尴尬了:
您需要指定参数名称,否则编译器会认为该数组仍然是 varargs 参数的一部分。
选项 2:
您可以重载该函数:
然后你可以像这样调用它:
这在调用处更为优雅,但是在声明方面会有一点开销。