Swift基礎(八)函式和閉包

2021-07-14 19:31:19 字數 1713 閱讀 9692

override func viewdidload() );

print(arr);

// 執行結果 [3, 4]

/*3 種閉包簡寫方法

1. 省略 引數型別和括號

var arr = getlist([1, 2, 3, 4], pre: );

2. 省略 引數型別和括號,return關鍵字

arr = getlist([1, 2, 3, 4], pre: (s in s > 2));

3. 引數名稱縮寫

arr = getlist([1, 2, 3, 4], pre: ) // 其中$0 表示第乙個引數*/}

// 函式型別,每乙個函式都有特定的函式型別,可以充當引數型別和函式的返回型別

func additive(a: int, b: int) -> int

func mutiplication(a: int, b: int) -> int

// 這個函式的型別是(int, int) -> int。可以解讀為:「這個函式型別有兩個int形的引數,並返回乙個int型別的值」

// 下面再舉乙個不帶任何引數或返回值的函式

func printwelcome()

// 函式型別的引數就,函式名後面括號裡定義的就是函式類的引數,可以使用乙個函式型別作為引數,如(int, int) -> int,

func printadditiveresult(addfun: (int, int) -> int, a: int, b: int)

// 函式型別的返回值,可以使用乙個函式作為另乙個函式的返回值型別

// 定義乙個自增函式,傳入int型別引數,返回int型別

func increase(input: int) -> int

// 定義乙個自減函式,傳入int型別引數,返回int型別

func reduce(input: int) -> int

// 定義乙個返回函式型別的函式

// 傳參bool型,返回乙個函式,該函式型別是(int) -> int,也就是傳int返回int的函式

func choosefunction(backwards: bool) -> (

int -> int)

// 巢狀函式,在函式內部定義的函式,巢狀函式預設對外界是隱藏的,但是仍然可以呼叫和使用其內部函式。內部函式也可以返回乙個巢狀函式,允許在巢狀函式內的另乙個範圍內使用。

func mainfunction(input: int) -> int

return internalfunction(1) // 呼叫內部函式 internalfunction

}//  閉包,可以捕獲和儲存其所在上下文中任意常量和變數的引用。

/**全域性和巢狀函式實際上也是特殊的閉包,閉包採用如下3種形式之一。

1. 全域性函式是乙個有名字但不會捕獲任何值得閉包

2. 巢狀函式是乙個有名字並可以捕獲其封閉函式域內值得閉包。

3. 閉包表示式是乙個利用輕量級語法所寫的可以捕獲其上下文中變數或常量值得沒有名字的閉包。

閉包格式

*//*

說明:1. 閉包主要指向函式型別

2. 閉包的引數必須和函式型別的引數和返回值一致

*/// 閉包例子

func getlist(arr: [int], pre: (int) -> bool) -> [int]

}return temparr;

}

Swift基礎 閉包

閉包是自包含的函式 塊,可以在在 中被傳遞和使用。閉包能捕獲和儲存騎在上下文中任意常量和變數的引用。這就是所謂的閉合幷包裹著這些常量和變數,俗稱閉包。swift會為我們管理在捕獲過程中設計的所有記憶體操作。閉包表示式式一種利用簡潔語法構建內聯的方式 2.1 sorted函式 swift標準庫提供了s...

Swift學習3 函式和閉包

1,函式的返回值可以是元組 2,函式的引數可以有預設值 3,輸入輸出引數 用 可以進行位址傳遞 4,函式型別 可以模擬函式指標,可以作為引數,也可以作為返回值 func stepforward input int int func stepbackward input int int func ch...

Swift 基礎入門 協議 閉包

協議 protocol 當協議中有可選實現方法時 該協議前要用關鍵字 objc 修飾,可選實現方法前,用 optional 修飾 objc protocol marrydelegate 必須要實現的 protocol dividdelegate class man person marrydeleg...