2014-12-07 40 views
9

据我所知,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 
    } 
} 

我要叫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) 

这是可能的斯威夫特?如果是这样,怎么样?

回答

17

是的,你_前缀的第二个参数的名称有它是匿名:

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

谢谢!这正是我需要的。 – SelectricSimian 2014-12-07 01:16:08

+0

注意:在Swift 4中,你必须在第一个参数前加'_'。 MyClass类{ FUNC巴(a:中等,_ B:智力) - >内部{ 返回A + B } } 变种克= MyClass的() g.bar(3,4) 错误:REPL .swift:88:7:错误:在调用中缺少参数标签'a' – 2017-12-15 21:05:55