是否可以強制關閉完成?同樣,具有返回值的函數必須總是返回,如果有辦法強制關閉包含總是完成所需的語法,那麼這將是ace。快速關閉 - 強制關閉始終完成
例如,該代碼不會編譯因爲函數並不總是返回值:
func isTheEarthFlat(withUserIQ userIQ: Int) -> Bool {
if userIQ > 10 {
return false
}
}
在完全相同的方式,我想定義具有關閉功能,這如果閉包永不返回,也不會編譯。例如,下面的代碼可能永遠不會返回completionHandler:
func isTheEarthFlat(withUserIQ userIQ: Int, completionHandler: (Bool) -> Void) {
if userIQ > 10 {
completionHandler(false)
}
}
上面的代碼編譯,但我不知道是否有是強制執行關閉在所有情況下發送完成處理程序的關鍵字。可能它與上述函數中的Void
有關?
不是一種語言的水平,雖然我的怎麼可能會達到一個有趣的想法。讓我嘗試一些東西 – Alexander
難道你不能只是在方法的最後調用完成處理程序嗎? – Sweeper
@Sweeper我們的大多數完成處理程序都用於服務器訪問,所以它們將返回(1)發生的任何錯誤和(2)來自服務器的數據。由於服務器錯誤不是我們想向用戶顯示的同一錯誤,因此我們通常會有很多功能來決定錯誤是什麼,同樣我們也可能希望以特定方式操作從服務器返回的數據。我要求編譯器確保在代碼的所有分支中調用完成處理程序 - 與正常函數中返回值必須返回的方式完全相同。 – theDuncs