fun multipleParams(id: Int = 1 , name: String) {
...
}
我在课堂上创建了上面的方法。以下方法调用正常使用:
multipleParams(1,"Rose")
是否有可能以某种方式使用它,有时我只通过name
,有时两者都通过?
multipleParams(1,"Rose")
multipleParams("Rose")
答案 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) {};