闭包的简单用法
//: 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