2016-09-20 42 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) { 

}