Swift入門篇-閉包和函數


 今天主要是給大家分享的是 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留言發給我,我看到之后第一時間回復您

  最后總結一下。送上一直思維導圖,作為文章的結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM