如何在预期两个参数时只将一个参数传递给函数?

时间:2017-06-21 05:02:54

标签: parameters kotlin

fun multipleParams(id: Int = 1 , name: String) {
  ...
}

我在课堂上创建了上面的方法。以下方法调用正常使用:

multipleParams(1,"Rose")

是否有可能以某种方式使用它,有时我只通过name,有时两者都通过?

multipleParams(1,"Rose")
multipleParams("Rose")

3 个答案:

答案 0 :(得分:5)

你几乎就在那里 - 你只需要利用 named arguments,因为你已经将它们命名为:

multipleParams(name = "Rose")

这将使用1的默认值id,因为它未通过,"Rose"用于name。你不能简单地在这里使用位置参数,因为你没有提供第一个参数,所以请使用你给出的名字。

答案 1 :(得分:3)

我想补充@Andrew Li的答案。

您只需更改参数的顺序即可实现。

fun multipleParams(name: String, id: Int = 1) {
  ...
}

现在您可以按照以下方式调用函数:

multipleParams("Rose", 1)
multipleParams("Rose")

注意:默认参数最好应位于函数参数的末尾。那么你不需要使用命名参数。

答案 2 :(得分:0)

我想补充一下@ chandil03的答案。

"默认参数应位于函数参数" 的末尾,但Function types参数除外,如果您要使用Lambda Expression,则例如:

fun multipleParams(name: String, id: Int = 1, block: () -> Unit) {
    ...
}

multipleParams("Rose") {};
multipleParams("Rose", 1) {};