2017-07-14 19 views
3

我在看一些Swift代碼,我已經遇到這個函數簽名:Swift中的表達式() - >()= {}是什麼意思?

func foo(withCompletion completion: @escaping() ->() = {}) { ... } 

我不知道是什麼部分() ->() = {}是什麼意思? 如果它是一個默認值,它應該如何使用?

有什麼想法?

該代碼是Swift 3

+1

它是一個返回void的函數。在這種情況下,函數是空{}。默認情況下不做任何事情。只要返回void就可以添加回調函數。 –

+0

...並沒有任何參數。 –

+1

它可能被重構爲可選項並設置爲nil,而不是空的閉包實現。 – JAL

回答

7

completion參數具有一個類型的() ->()。這是一個閉包,沒有參數並且有一個空的(void)返回類型。

= {}是參數的默認值,意思是如果您不需要在閉包中實際需要傳遞該參數。

foo(withCompletion: { 
    // your code here 
}) 

或(使用後關閉語法):

,因此您可以調用這個

foo() { 
    // your code here 
} 

或者(如果你不想使用完成關閉):

foo()