2016-09-20 43 views
9

当我创建了一个功能,我可以做一个参数可选给它一个默认值,比如:功能方面与雨燕可选完成块

func foo(bar: String = "foobar") {} 

我想要做的是相同的(使可选)与完成块。我试过以下内容:

func foo(completionBlock: (foo: String) ->() =() ->()) 
func foo(completionBlock: (foo: String) ->() = (foo: String) ->()) 
func foo(completionBlock: (foo: String) ->() = ((foo: String) ->())) 
func foo(completionBlock: (foo: String) ->() = ((foo: String) in)) 
func foo(completionBlock: (foo: String) ->() = {(foo: String) in}) 

我该怎么做?

编辑:
这是/是一个重复的问题,对不起。但是,我无法在原始问题中找到解决方案。所以Nathan的回答是最好的一个

回答

9

在斯威夫特3:

func foo(completionBlock: (String) ->() = { _ in }) {} 
+1

这不需要为completionBlock @escaping,因为它是从Swift3.0隐式不转义? – Cyrus

8

如果你想默认为nil

func foo(completionBlock: ((String) ->())? = nil) { 

} 

如果你想提供一个默认的完成块:

func defaultCompletionBlock(foo: String) { 

} 

func foo(completionBlock: ((String) ->()) = defaultCompletionBlock) { 

}