今天主要是給大家分享的是 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("無參數,無傳回值的韓式類型")}//-----------------第一種調用方法------------/*調用函數Fuction1:參數為閉包2:閉包的參數為空白,傳回值為空白*/Fuction({})//-----------------第二種調用方法------------Fuction() { }以上2種調用方法的運行結果都是無參數,無傳回值的韓式類型
後面的文章,我回陸續把我學習到swift語言的知識寫出來形成一個系列。由於是新語言,難免有不足,歡迎給我提出意見。也可以加我QQ 1436051108一起討論,如果您有什麼問題,也可以直接在QQ留言發給我,我看到之後第一時間回複您
最後總結一下。送上一直思維導圖,作為文章的結束