Swift 閉包
Swift閉包是Swift函數的另一種類型,可以在不使用關鍵字func和函數名的情況下定義。愛掏網 - it200.com
與Swift函數類似,Swift閉包也可以接受參數和返回值。愛掏網 - it200.com它還包含一組在調用后執行的語句,并且可以像函數一樣分配給變量/常量。愛掏網 - it200.com
主要有兩個原因使用Swift閉包:
完成塊
閉包用于在某個任務執行完成后提供通知。愛掏網 - it200.com
高階函數
閉包可以作為高階函數的輸入參數傳遞。愛掏網 - it200.com高階函數是一種接受函數作為輸入并返回類型為函數的值的函數類型。愛掏網 - it200.com在這種情況下,閉包被用于省略了func關鍵字和函數名,使代碼更易讀和簡潔。愛掏網 - it200.com
語法
{ (parameters) -> return type in
statements
}
在這里, in 是一個關鍵字,用于在閉包中分隔返回類型和語句。愛掏網 - it200.com閉包可以接受參數和返回值。愛掏網 - it200.com
讓我們創建自己的閉包:
示例
簡單閉包
let simpleClosure = {
}
simpleClosure()
這里,我們聲明了一個簡單的閉包 { },它不接受任何參數,不包含任何語句,也不返回任何值。愛掏網 - it200.com這個閉包被賦值給常量simpleClosure。愛掏網 - it200.com
包含語句的閉包
示例
let simpleClosure = {
print("Hello JavaTpoint")
}
simpleClosure()
輸出:
Hello JavaTpoint
在上面的程序中,我們定義了一個名稱為simpleClosure的閉包,它被推斷為() -> (),因為它不接受任何參數,并且不返回任何值。愛掏網 - it200.com
包含參數的閉包
示例
let simpleClosure:(String) -> () = { name in
print(name)
}
simpleClosure("Hello JavaTpoint")
輸出:
Hello JavaTpoint
在上面的程序中,類型閉包(String) ->()接受一個類型為字符串的輸入,但不返回值。愛掏網 - it200.com為了在閉包的語句中使用傳遞的值,我們在參數名name后面加了in關鍵字。愛掏網 - it200.com
在這里,閉包接受一個字符串,我們在調用閉包時需要傳遞字符串,例如simpleClosure(“Hello JavaTpoint”)。愛掏網 - it200.com
返回值的閉包
閉包可以像函數一樣返回值。愛掏網 - it200.com要從閉包返回一個值,我們必須在括號()內明確添加要返回的類型,然后使用 ->。愛掏網 - it200.com
示例
let simpleClosure:(String) -> (String) = { name in
let greeting = "Hello JavaTpoint " + "A platform for all technologies"
return greeting
}
let result = simpleClosure("Hello JavaTpoint")
print(result)
輸出:
Hello JavaTpoint A platform for all technologies
您可以看到,在上述程序中,我們將類型定義為 **simpleClosure: (String) – > (String) ** 因為Swift無法自動推斷返回值的閉包類型。愛掏網 - it200.com類型 (String) -> (String) 指定閉包需要一個類型為String的輸入,并且返回一個類型為String的值。愛掏網 - it200.com