闭包

作者: 摇耳朵的小布丁i | 来源:发表于2016-11-18 15:55 被阅读0次

    import Foundation

    // 闭包:闭包的本质-匿名函数(没有名字的函数)就是一个能完成特定功能的代码块

    //写一个求和函数

    func sum(num1:Int,num2:Int)->Int{return num1 + num2}

    /* (Int, Int)->(Int) */let biBao:( (Int, Int)->(Int) )biBao = {    (num1:Int, num2:Int)->(Int) in    return num1 + num2}

    //调用闭包let result = biBao(1,2)print(result)

    //无参数无返回值的闭包

    //OC return作用: 1:返回一个值 2:提前结束一个函数

    //()->(Void) 无参无返的闭包类型

    let b1:(()->(Void)) = {    ()->(Void) in       

     print("无参无返的闭包类型")}b1()//无参数有返回值的闭包类型

    //() -> (Int)let b2:(() -> (Int)) = {  () -> (Int) in    return 10}print( b2() )

    //有参数有返回值闭包类型

    //() -> (Int)var b3:( (Int,Int)->(Int) ) = {    (n:Int,m:Int)->(Int) in    

    return n + m}print(b3(1,5))b3 = {    (a:Int,b:Int)->(Int) in    return a - b}print( b3(10,5) )b3 = {    (i:Int,j:Int)->(Int) in    return i * j}

    print(b3(2,3))

    //闭包类型的变量,不止能存储一个代码块,而是能存储和变量类型一致的所有代码块

    //有参数无返回值闭包类型//比较两个数最大值并把两个值输出的闭包

    let b4:((Int,Int) -> (Void)) = {    (x:Int,y:Int) -> (Void) in    print(x > y ? x : y)

      //三步运算符}b4(10,13)var arr = ["zhangsan","lisi","yifeng","mazi","xiaofan"]

    //可变数组 两种排序方式都可以使用,不可变的只能用sorted

    //arr.sort()

    //arr.sorted()

    //升序排//arr.sort()

    //print(arr)arr.sort { (str1:String, str2:String) -> Bool in 

     // 比较条件大于,得出的结果是降序 

     // 比较条件是小于,得出的结果是升序   

     return str1 > str2}print(arr)//泛型  (了解)func printContent(something:T){ 

     //T的位置随便定义

    print(something)

    }

    printContent(something: "12345")

    printContent(something: 1)

    printContent(something: 1.22)

    相关文章

      网友评论

          本文标题:闭包

          本文链接:https://www.haomeiwen.com/subject/ubfspttx.html