在本文中,您將通過示例學(xué)習(xí)Swift中有關(guān)函數(shù),什么是函數(shù),語法,類型的所有知識。
函數(shù)是一組定義要執(zhí)行的動作的語句。函數(shù)的主要用途是使代碼可重復(fù)使用。
從技術(shù)上講,您可以將函數(shù)視為機器。機器執(zhí)行特定任務(wù),要求輸入,處理輸入并返回輸出。
取決于函數(shù)是預(yù)定義的還是由程序員創(chuàng)建的;函數(shù)有兩種類型:
庫函數(shù) - 在Swift Framework 中已經(jīng)定義的函數(shù)。
用戶定義的函數(shù) - 程序員自己創(chuàng)建的函數(shù)。
庫函數(shù)是已在Swift框架中定義的內(nèi)置函數(shù)。提供這些函數(shù)是為了解決Swift中的常見問題,因此您不必自己解決它們。它們是簡單的操作,例如打印,查找最小值和最大值等。
您可以通過調(diào)用庫函數(shù)來直接使用它。如果你需要,你可以看到 Swift 框架內(nèi)的所有函數(shù)。只要寫 import Swift,按Cmd,點擊它。您將導(dǎo)航到一個新頁面。搜索所有以func關(guān)鍵字開頭的語句。
print("Hello, World!")
當(dāng)您運行上述程序時,輸出將是:
Hello, World!
在上面的程序中,我們調(diào)用了Swift框架中定義的內(nèi)置函數(shù) print 。該函數(shù)用于在控制臺中打印輸出。
我們能夠調(diào)用print()函數(shù),因為Swift框架會自動導(dǎo)入到我們的Playground中。否則,我們應(yīng)該自己通過使用 import Swift 導(dǎo)入它。
Swift還允許您定義自己的函數(shù)。創(chuàng)建自己的函數(shù)有助于編寫代碼來解決問題或執(zhí)行Swift Framework中不存在的功能。您還可以在將來重復(fù)使用您的函數(shù)來執(zhí)行類似的任務(wù)。
同樣,也可以根據(jù)參數(shù)和return語句對函數(shù)進行分類。請參考文章Swift函數(shù)參數(shù)類型和返回類型。
func function_name(args...) -> ReturnType { //語句 return value }
讓我們簡要說明函數(shù)的組成部分:
func 是創(chuàng)建函數(shù)必須編寫的關(guān)鍵字
function_name 是函數(shù)的名稱。您可以給它任何定義函數(shù)功能的名稱。
args… 定義函數(shù)接受的輸入。
-> 該運算符用于指示函數(shù)的返回類型。
ReturnType 定義可以從函數(shù)返回的值的類型。例如Int,String等等
return 關(guān)鍵字用于將程序的控制權(quán)轉(zhuǎn)移到函數(shù)調(diào)用,并從函數(shù)返回值。
即使您未指定 return 關(guān)鍵字,該函數(shù)也會在執(zhí)行最后一條語句后自動返回。
value 表示從函數(shù)返回的實際數(shù)據(jù)。值類型必須與 ReturnType 匹配。
在上圖中,語句function_name(args)使用參數(shù)值args調(diào)用/調(diào)用該函數(shù),然后離開代碼的當(dāng)前部分(即停止執(zhí)行其下面的語句)并開始執(zhí)行該函數(shù)內(nèi)部的第一行。
該程序第一行代碼,func function_name(Args...) ,并接受在函數(shù)調(diào)用function_name(args)期間傳遞的值args。
然后程序執(zhí)行函數(shù)內(nèi)部定義的 statementsInsideFunction 語句。
函數(shù)內(nèi)部的語句按從上到下的順序,逐個執(zhí)行。
執(zhí)行完最后一條語句后,程序離開函數(shù),返回到它從Function_Name(Args)開始的地方。
let val = 將函數(shù)返回的值存儲為一個常量 val。 同樣,您可以將變量存儲為var val =。
之后,將執(zhí)行 statementsOutsideFunction 語句。
func greet(user:String) { print("Good Morning! \(user)") }
上面顯示的是一個函數(shù)定義,其中包含以下組成部分:
關(guān)鍵字 func 標(biāo)記函數(shù)頭的開始。
greet 是用于在程序中唯一標(biāo)識和調(diào)用函數(shù)的函數(shù)名稱。
(user:String)標(biāo)記函數(shù)頭的結(jié)尾并接受 String 類型的參數(shù)。請參考文章Swift函數(shù)的參數(shù)類型和返回類型,它們定義了帶有參數(shù)的函數(shù)。
該函數(shù)由主體內(nèi)的一條print語句組成,該語句在您調(diào)用函數(shù)之后執(zhí)行。
一旦創(chuàng)建了一個函數(shù),就可以在程序中調(diào)用它來執(zhí)行函數(shù)中聲明的語句。要調(diào)用一個函數(shù),你只需要寫一個函數(shù)名后面跟著() ,然后把輸入?yún)?shù)傳遞給它:
greet(user: "Isac")
func greet(user:String) { print("Good Morning! \(user)") } greet(user: "Isac")
當(dāng)您運行上述程序時,輸出將是:
Good Morning! Isac
在上面的代碼中,調(diào)用自定義函數(shù) greet(user: "Isac") 并傳遞字符串類型的值 Isact。之后,print執(zhí)行函數(shù)內(nèi)部的語句。
return 關(guān)鍵字告訴程序退出函數(shù)并返回到進行函數(shù)調(diào)用的行。
您也可以使用 return 關(guān)鍵字傳遞值,其中 value 是變量或從函數(shù)返回的其他信息。
func greet(user:String)-> String { return "Good Morning! \(user)" } let greeting = greet(user: "Isac") print(""" 您有一條新消息 \(greeting) """)
當(dāng)您運行上述程序時,輸出將是:
您有一條新消息 Good Morning! Isac
在上面的代碼中,調(diào)用自定義函數(shù) greet(user: "Isac") 并傳遞字符串類型的值 Isact。return "Good Morning! \(user)" 語句返回String類型的值,并將程序轉(zhuǎn)移到函數(shù)調(diào)用中。
let greeting = 存儲從函數(shù)返回的值。 函數(shù)返回后,將執(zhí)行函數(shù)調(diào)用下方的print語句。
指定反映函數(shù)用途的函數(shù)名稱。
一個函數(shù)只能完成一項任務(wù)。如果一個函數(shù)執(zhí)行多項任務(wù),請將其分解為多個函數(shù)。
試著在一個函數(shù)中盡早地思考和組織語句,使代碼可重用和模塊化。