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

11
据我所知,Swift函数默认情况下具有无名称参数,但Swift方法不是这样(除了第一个参数)。例如,考虑以下定义:
func foo(a: Int, b: Int) -> Int {
    return a + b
}

class MyClass {
    func bar(a: Int, b: Int) -> Int {
        return a + b
    }
}

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

foo(10, 20) // fine

foo(a: 10, 20) // error
foo(10, b: 20) // error
foo(a: 10, b: 20) // error

我必须以无名的第一个参数和命名的第二个参数来调用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

我知道可以使用#符号将任何未命名的参数命名,但我的问题是:是否有办法使bar的两个参数都未命名?

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

MyClass().bar(10, 20)

在 Swift 中是否可能实现这个?如果可以,应该怎么做?

1个回答

25

是的,您需要在第二个参数名称前使用_作为前缀,使其成为匿名参数:

class MyClass {
    func bar(a: Int, _ b: Int) -> Int {
        return a + b
    }
}

谢谢!这正是我所需要的。 - exists-forall
注意:在 Swift 4 中,您还需要在第一个参数前面放置“_”。 class MyClass { func bar(a: Int, _ b: Int) -> Int { return a + b } } var g = MyClass() g.bar(3, 4) 错误:repl.swift:88:7:调用中缺少参数标签'a' - A. L. Flanagan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接