Swift学习之闭包

闭包的简单用法

    //: Playground - noun: a place where people can play

import UIKit


let 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() //10
firstIncrement() //20
firstIncrement() //30

var secondIncrement = incrementNum(originValue: 7)
secondIncrement() //7
secondIncrement() //14
secondIncrement() //21

var thirdIncrement = secondIncrement
thirdIncrement()


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) //110

completionHandler.first?()
print(instance.x) //10

你可能感兴趣的:(Swift,学习记录)