闭包

作者: 心底碎片 | 来源:发表于2016-09-08 16:59 被阅读8次

闭包的基本语法

var arr:[Int] = []
for _ in 0..<100{
    arr.append(random()%1000)
}
//闭包作为函数的变量传入函数
arr.sort({ (a:Int , b:Int) -> Bool in
    return a > b
})
//闭包语法的简化
arr.sort({(a:Int , b:Int)->Bool in return a > b})
arr.sort({a , b in return a > b})
arr.sort({a , b in a > b})
arr.sort({$0 > $1})
arr.sort(>)
//Trailing Closure结尾闭包
arr.sort(){a , b in
    return a > b
}
arr.map{ (var number) -> String in
    var res = ""
    repeat{
        res = String(number%2) + res
        number /= 2
    }while number != 0
    return res
}
let showView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
let rectangle = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
rectangle.center = showView.center
rectangle.backgroundColor = UIColor.redColor()
showView.addSubview(rectangle)
UIView.animateWithDuration(2.0, animations: {
    rectangle.backgroundColor = UIColor.blackColor()
    rectangle.frame = showView.frame
})

闭包的内容捕获

var arr:[Int] = []
for _ in 0..<100{
    arr.append(random()%1000)
}
arr.sort{ a, b in
    abs(a-300) < abs(b-300)
}
var num = 700
arr.sort{a, b in
    abs(a-num) < abs(b-num)
}

闭包和函数的引用类型

func runningMetersWithMetersPerDay( metersPerDay: Int) -> () -> Int{
    var totalMeters = 0
    return{
        totalMeters += metersPerDay
        return totalMeters
    }
}
var playA = runningMetersWithMetersPerDay(2000)
playA()//2000
playA()//4000
playA()//6000

var playB = runningMetersWithMetersPerDay(5000)
playB()//5000
playB()//10000

var anotherPlay = playB//给原有的变量起了另外一个名字,调用那一个都会改变他们的值,这就说明闭包和函数是引用类型
anotherPlay()//15000
playB()//20000

let playC = runningMetersWithMetersPerDay(3000)//对于引用类型来讲,常量的概念不代表它里面的值不能被修改,实际代表的是playC这个名称是固定的
playC()//3000
playC()//6000

相关文章

  • swift-闭包

    闭包 闭包定义 闭包简化 - 尾随闭包 闭包参数 闭包返回值 闭包的循环引用

  • 闭包,闭包,闭包

    1、这家伙到底是什么? 网上关于这个的讨论的太多了太多了,有各种的举例子,但是大部分还在寻找这个答案的小伙伴对于变...

  • 闭包-Closures [swift 5.1]

    闭包的语法 尾随闭包 闭包逃离 自动闭包

  • Day7 闭包(Closures)

    本页包含内容:• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包 1、闭包表达式 闭包...

  • Python闭包

    闭包 = 环境变量 + 函数 调用闭包内部的环境变量 闭包的经典误区 闭包与非闭包实现人类走路 非闭包 闭包

  • 闭包(closure)

    ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...

  • swift- 闭包一

    /*• 闭包表达式• 尾随闭包• 值捕获• 闭包是引用类型• 逃逸闭包• 自动闭包*/

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • Swift-进阶 :闭包(二)逃逸闭包 & 非逃逸闭包

    本文主要分析逃逸闭包 、非逃逸闭包、自动闭包 逃逸闭包 & 非逃逸闭包 逃逸闭包定义 当闭包作为一个实际参数传递给...

  • javascript闭包详解

    跟我念 bi 闭 bao包 ,闭包的闭,闭包的包。。 闭包的简介 在计算机科学中,闭包(英语:Closure),又...

网友评论

      本文标题:闭包

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