当我期望两个函数时,如何只传递一个参数给函数?

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

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

 multipleParams(1,"Rose") 

有没有可能以某种方式使用它,有时我只传递name ,有时两个?

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

你几乎在那里 – 你只需要使用 命名参数,因为你已经有他们的名字:

 multipleParams(name = "Rose") 

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

我想添加@Andrew Li的答案。

你可以改变参数的顺序来达到目的。

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

现在你可以通过以下方式调用函数:

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

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

我想添加@ chandil03的答案。

“缺省参数应该在函数参数的末尾” ,但除了函数类型参数外,如果您想使用Lambda表达式 ,例如:

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