2016-09-20 4 views
9

Когда я создаю функцию, я могу сделать необязательный параметр, придав ему значение по умолчанию, например:Функция с дополнительным блоком завершения в Swift

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}) 

Как это сделать?

EDIT:
Это/был дублирующий вопрос, извините за это. Однако я не мог найти решение в исходном вопросе. Так ответ Натана лучше один

ответ

9

В Swift 3:

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

Не нужно ли @escaping для завершения, поскольку он неявно не ускользает после Swift3.0? – Cyrus

8

Если вы хотите по умолчанию nil:

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

} 

Если вы хотите, чтобы обеспечить блок- завершающие по умолчанию:

func defaultCompletionBlock(foo: String) { 

} 

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

} 
Смежные вопросы