swift 闭包与普通函数的区别

闭包能够将较为复杂的功能,传递是这个闭包中的函数以及数据,占用资源比较小。

闭包是封闭的、自包含的代码块。 属于函数的匿名简化版,以下是一个闭包的形式:

{ (形参列表) -> 返回值类型 in
    执行体(相当于函数体)
 }

闭包表达式与与定义函数的语法相比,有以下区别:

  1. 删除掉了 func
  2. 删除掉了函数名
  3. 在返回值的类型后添加关键字in
  4. { }移到了形参列表的前边

关于闭包表达式说明

  1. 不能以一个闭包表达式开始一个顶层语句
  2. 形参列表中的形参不能有默认值

闭包与普通函数:

1.变量或者常量的值

// 普通函数
func addShow(int1 :Int, int2: Int) {
        return int1 + int2
}
// 闭包
let a = {(int1: Int, int2: Int) -> Int in 
       return int1 + int2
}

2.函数返回值

// 普通函数
func operaShow(flag: Bool) -> (int1: Int,int2: Int) -> Int {
        func a(int1: Int, int2: Int){
                return int1 + int2
        }
        func b(int1: Int, int2: Int){
                return int1 - int2
        }
        return flag ? a:b
}
// 闭包
func operaShow(flag: Bool) -> (int1: Int,int2: Int) -> Int {
        func flag?{(int1: Int, int2: Int) -> Int in
                return int1 + int2
        }:{(int1: Int, int2: Int) -> Int in
                return int1 - int2
        {
}
operaShow(flag:true)(5,4)
operaShow(flag:false)(5,4)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。