Swift学习之闭包

来源:互联网 发布:python读取dat文件 编辑:程序博客网 时间:2024/06/05 10:53

闭包的简单用法

    //: Playground - noun: a place where people can playimport UIKitlet names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]func backWards (s1:String,s2:String) ->Bool{    return s1 < s2}var reversed = names.sort(backWards)reversed = names.sort({    (s1:String,s2:String) -> Bool in    return s1 > s2})reversed = names.sort({(s1:String,s2:String) ->Bool in return s1 > s2})print(reversed) //["Ewa", "Daniella", "Chris", "Barry", "Alex"]reversed = names.sort({s1,s2 in return s1 > s2})reversed = names.sort({$0 > $1})reversed = names.sort(<)reversed = names.sort(){$0 < $1}reversed = names.sort{$0 > $1}func incrementNum (originValue value :Int) -> ()->Int {    var runningTotal = 0    func incrementer()->Int{        runningTotal += value        return runningTotal    }    return incrementer}var firstIncrement = incrementNum(originValue: 10)firstIncrement() //10firstIncrement() //20firstIncrement() //30var secondIncrement = incrementNum(originValue: 7)secondIncrement() //7secondIncrement() //14secondIncrement() //21var thirdIncrement = secondIncrementthirdIncrement()func someFuncWithNonescapeClosure(@noescape closure:()->Void){    closure()}var completionHandler :[()->Void] = []func someFunctWithScapeClosure(completion:()->Void){    completionHandler.append(completion)}class someClass {    var x = 10    func doSomtiong() {        //逃逸的不会立即执行        someFunctWithScapeClosure{            self.x -= 100        }        //非逃逸的立即执行        someFuncWithNonescapeClosure { () -> Void in            x += 100        }    }}var instance = someClass()instance.doSomtiong()print(instance.x) //110completionHandler.first?()print(instance.x) //10
0 0