
闭包基础格式 :
{
(参数:类型) ->返回类型 in
执行方法
return 返回类型
}
说明:
1;闭包主要指向函数类型
2:闭包的参数必须和函数类型的参数和返回值一致
//这是我们的model
class students {
var studentsName = String()
var studentsID = Int()
}
//使用
var student : [students] = []
student.sort({ $0.fileID > $1.fileID })//匿名函数实例
//下面是闭包的简化使用
// 一般的代码形式
student.sort({ (student1: students, student2: students) -> Bool in return student1.studentsID > student2.studentsID })
// 省略(->)的形式
student.sort({ student1, student2 in return student1.studentsID > student2.studentsID })
// 去掉return的简单闭包形式
student.sort({ student1, student2 in student1.studentsID > student2.studentsID })
// 隐藏参数的形式
student.sort({ $0.studentsID > $1.studentsID })
捕获

func addHandler(set:Int) -> ()->Int {
var sum = 0
return{
sum+=set
return sum
}
}
//同一个闭包里的数值是累积的
let addByTen = addHandler(10)
print(addByTen())//10
print(addByTen())//20
print(addByTen())//30
//addBySix 与addByTen 属于不同的闭包对象, 所以是从零开始
let addBySix = addHandler(6)
print(addBySix())//06
print(addBySix())//12
print(addBySix())//18

网友评论