有没有办法在不破坏现有调用的情况下向函数(具有 var args)添加一个默认值的参数?

问题描述 投票:0回答:1

我有一个功能

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)

变得破碎了。

有没有办法在不破坏现有调用的情况下添加一个具有默认值的参数?

function kotlin overloading variadic-functions default-value
1个回答
0
投票

我是 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
,如果没有则保留它。

© www.soinside.com 2019 - 2024. All rights reserved.