我有一个功能
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 之后使用属性来做到这一点,例如
fun foo(
id: String,
vararg values: Int,
attributes: Array<String> = arrayOf("a", "b"),
){
...
}
但是等等,这会引发有关类型的错误,因为您打算在 foo() 最后传递的属性也将被视为 vararg,因此要使用此代码,我们必须调用如下函数:
foo("id_3", 1, 2, 3,attributes=loremipsum)
只要需要,您可以添加
,attributes=loremipsum
,如果没有则保留它。