2016-09-20 15 views
9

Kiedy utworzyć funkcję, mogę zrobić to parametr opcjonalny, nadając mu wartość domyślną, tak:Funkcja z opcjonalnego bloku realizacji w Swift

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

chcę zrobić to samo (sprawiają, że opcjonalnie) z blokiem zakończenia. Próbowałem:

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

Jak mogę to zrobić?

EDYCJA:
To jest/było duplikatem pytanie, przepraszam za to. Jednak nie mogłem znaleźć rozwiązania w pierwotnym pytaniu. Więc odpowiedź Nathan jest najlepszy

Odpowiedz

9

w Swift 3:

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

Czy to nie wymagałoby funkcji @escaping do ukończenia blokady, ponieważ jest ona domyślnie nie-uciekająca od wersji Swift3.0? – Cyrus

8

Jeśli chcesz domyślnie nil:

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

} 

Jeśli chcesz podać blok domyślny realizacji:

func defaultCompletionBlock(foo: String) { 

} 

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

} 
Powiązane problemy