- Swift 5從零到精通iOS開發訓練營
- 張益琿編著
- 718字
- 2022-07-27 18:32:13
5.2 函數的類型與函數嵌套
前面的章節有提到,Swift語言中每一個函數都有其特定的類型。因此,開發者也可以像聲明普通變量那樣來聲明一個函數變量,同樣也可以對此變量進行賦值、調用等操作。將函數作為數據類型這種語言設計思路有強大的優勢,這將允許開發者將一個函數作為另一個函數的參數或者返回值,大大增強了編程的靈活性。
函數變量的聲明及賦值示例代碼如下:
//聲明一個函數變量 var addFunc:(Int,Int)->Int //對函數變量進行賦值 addFunc = {(param1:Int,param2:Int) in return param1+param2} //調用函數變量 addFunc(2,3)
函數變量的類型由參數和返回值決定,參數和返回值相同的函數類型就相同。上面的示例代碼中對函數變量的賦值采用了閉包的方式,閉包實質上是一段有具體功能的代碼塊,其結構為{(param1,param2,…) in代碼塊},其最外面由大括號包圍,內部小括號為參數列表,in為閉包關鍵字,之后需要編寫實現相應功能的代碼。關于閉包的更多內容,后面章節會詳細介紹。
也可以通過一個函數來對函數變量進行賦值,示例如下:
var addFunc:(Int,Int)->Int func myFunc13(param1:Int,param2:Int) -> Int { return param2+param1 } addFunc = myFunc13 addFunc(1,2)
函數也可以作為另一個函數的參數,示例代碼如下:
//參數param的類型為函數類型(Int,Int)->Int func myFunc14(param:(Int,Int)->Int) { print(param(1,2)) } //將addFunc函數作為參數傳遞進myFunc14函數 myFunc14(param: addFunc)
如以上代碼所示,這種將函數作為參數的編程方式應用十分廣泛,在Objective-C語言中,這種語法結構被稱為block。在處理一些回調操作時,例如網絡回調、子線程異步處理回調等場景中,使用這種編程方式將十分簡潔優美。
函數可以作為參數,也可以作為返回值來使用,示例代碼如下:

上面的演示代碼中,在函數內部創建了閉包并將其返回,由于Swift語言支持進行函數嵌套,因此開發者也可以在函數內部再次創建函數,示例如下:

提示
函數也有其作用域,所謂嵌套函數是指在函數內部再創建一個子函數,子函數只能在父函數內部調用,不可以在父函數外部調用,但是可以作為返回值傳遞到父函數外部。
推薦閱讀
- Java程序設計與計算思維
- Bootstrap Essentials
- GameMaker Programming By Example
- H5頁面設計:Mugeda版(微課版)
- Java Web程序設計任務教程
- Learning Concurrent Programming in Scala
- PySide 6/PyQt 6快速開發與實戰
- Learning AngularJS for .NET Developers
- 用戶體驗可視化指南
- 打開Go語言之門:入門、實戰與進階
- Android傳感器開發與智能設備案例實戰
- ABAQUS6.14中文版有限元分析與實例詳解
- 快樂編程:青少年思維訓練
- MongoDB Administrator’s Guide
- Spring Web Services 2 Cookbook