var arr:[Int] = []
for _ in 0..<100{
arr.append(random()%1000)
}
//閉包作為函數(shù)的變量傳入函數(shù)
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結(jié)尾閉包
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
}
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)
}
閉包和函數(shù)的引用類型
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//給原有的變量起了另外一個名字,調(diào)用那一個都會改變他們的值饵婆,這就說明閉包和函數(shù)是引用類型
anotherPlay()//15000
playB()//20000
let playC = runningMetersWithMetersPerDay(3000)//對于引用類型來講抖所,常量的概念不代表它里面的值不能被修改愚战,實際代表的是playC這個名稱是固定的
playC()//3000
playC()//6000