• 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留言发给我,我看到之后第一时间回复您

      最后总结一下。送上一直思维导图,作为文章的结束

  • 相关阅读:
    Source Insight的一些使用技巧
    ADS中Image$$RO$$Limit的计算
    JQuery 对 Select option 的操作
    设计模式: 细节[装饰模式]
    ObjectContext 实例已释放,不可再用于需要连接的操作
    关于一个多线程面试题的理解
    [Head First]第三章:装饰模式
    [Head First]第一章:策略模式
    MVC4 DropDownListFor的问题
    如何调试MVC4的代码
  • 原文地址:https://www.cnblogs.com/gcb999/p/3797072.html
Copyright © 2020-2023  润新知