今天主要是給大家分享的是 swift中閉包的用法,我個人覺得閉包就是函數的簡寫方法,如果您函數不是很熟悉請查閱 swift入門篇-函數
1:函數類型
函數類型 var 變量 :(類型)->返回值 =函數名 說明: 1:函數名 表示函數地址 2:(類型)->返回值 表示函數類型 3:函數類型必須和函數名的參數和返回值一致
例子
/* 1:func 是函數關鍵字 2:Say是函數名,表示函數的地址
3:Say函數 參數是整形 返回值為布爾類型
*/
func Say(num:Int)->Bool{
return num > 10
}
var By:(Int)->Bool = Say
/*
1:Say是函數名的地址,並且函數類型,參數為整形,返回值布爾類型
2:(Int)->Bool 表示 函數類型,參數為整形 ,返回值為布爾類型。
即:By是函數變量(參數為整形,返回值為布爾類型) 指向函數名(Say)
*/
var b = By(12) //by(12)直接調用函數
println(b)
運行結果
true
2:閉包格式
格式 : { (參數:類型) ->返回類型 in 執行方法 return 返回類型 }
說明:
1;閉包主要指向函數類型
2:閉包的參數必須和函數類型的參數和返回值一致
例子
/* 函數Getlist說明 參數: 1:第一個參數 整形集合變量 2:第二參數,函數類型變量 參數為整形返回值布爾類型 返回值 整形集合 */ func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{ //定義一個空的可變整形集合 var tempArr = Int[]() for temp in arr { if pre(temp){ tempArr += temp; } } return tempArr; } /* 調用Getlist 說明 第一個參數 整形數組 [1,2,3,4] 第二個參數 閉包 來指向給 函數類型 。 {(s) in return s>2} 閉包類型說明,參數為整形,返回值為布爾類型 */ let arr=GetList([1,2,3,4],{(s:Int) in return s>2}) println(arr) 運行結果 [3, 4]
3:閉包簡寫方法
1;第一種簡寫 :省略 參數類型和括號
2:第二種簡寫 : 省略 參數類型和括號,return關鍵字
3:第三種簡寫 : 參數名稱縮寫 (用$0代表第一個參數,$1代表第二個參數)
/* 函數Getlist說明 參數: 1:第一個參數 整形集合變量 2:第二參數,函數類型變量 參數為整形返回值布爾類型 返回值 整形集合 */ func GetList(arr:Int[] , pre:(Int)->Bool) ->Int[]{ //定義一個空的可變整形集合 var tempArr = Int[]() for temp in arr { if pre(temp){ tempArr += temp; } } return tempArr; } //第一種簡寫 :省略 參數類型和括號 var Arr = GetList([1,2,3,4],{s in return s>2}) //第二種簡寫 : 省略 參數類型和括號,return關鍵字 Arr = GetList([1,2,3,4], {s in s>2}) //第三種簡寫 : 參數名稱縮寫 Arr = GetList([1,2,3,4],{$0>2}) //其中$0表示第一個參數 println(Arr) 以上3種用法的運行結果為 [3, 4]
4:尾隨閉包
官方定義:尾隨閉包是一個書寫在函數括號之后的閉包表達式,函數支持將其作為最后一個參數調用
/* 1: 函數 Fuction 的參數 函數類型 2: 參數為函數類型,函數類型,參數為空,返回值為空 */ func Fuction(closure: () -> ()) { println("無參數,無返回值的韓式類型") } //-----------------第一種調用方法------------ /* 調用函數Fuction 1:參數為閉包 2:閉包的參數為空,返回值為空 */ Fuction({ }) //-----------------第二種調用方法------------ Fuction() { } 以上2種調用方法的運行結果都是 無參數,無返回值的韓式類型
后面的文章,我回陸續把我學習到swift語言的知識寫出來形成一個系列。由於是新語言,難免有不足,歡迎給我提出意見。也可以加我QQ 1436051108一起討論,如果您有什么問題,也可以直接在QQ留言發給我,我看到之后第一時間回復您
最后總結一下。送上一直思維導圖,作為文章的結束