Swift方法中的多个未命名参数

exi*_*all 9 parameters methods function swift

据我所知,默认情况下Swift函数有未命名的参数,但Swift方法没有(不包括第一个参数).例如,给出以下定义:

func foo(a: Int, b: Int) -> Int {
    return a + b
}

class MyClass {
    func bar(a: Int, b: Int) -> Int {
        return a + b
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须foo使用未命名的参数调用:

foo(10, 20) // fine

foo(a: 10, 20) // error
foo(10, b: 20) // error
foo(a: 10, b: 20) // error
Run Code Online (Sandbox Code Playgroud)

我必须bar使用未命名的第一个参数调用,并且第二个参数命名为:

MyClass().bar(10, b: 20) // fine

MyClass().bar(10, 20) // error
MyClass().bar(a: 10, b: 20) // error
MyClass().bar(a: 10, 20) // error
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用#符号来命名任何未命名的参数,但我的问题是:有什么方法可以将两个参数都设为bar未命名的?

换句话说,我想以bar这样的方式声明我可以像普通函数一样调用它:

MyClass().bar(10, 20)
Run Code Online (Sandbox Code Playgroud)

这在Swift中可能吗?如果是这样,怎么样?

Nat*_*ook 20

是的,在第二个参数名称前加上前缀,_使其具有匿名性:

class MyClass {
    func bar(a: Int, _ b: Int) -> Int {
        return a + b
    }
}
Run Code Online (Sandbox Code Playgroud)