什么是闭包?
可以捕获和存储其所在上下文中任意常量和变量的引用的表达式
{ (parameters) -> returnType in
statements
}
我把所有的函数都理解为是闭包
全局函数:不能捕获值的闭包
方法: 定义在实例中的函数,所以方法也能当闭包表达式处理
嵌套函数:作用区域小点,可以捕获其封闭函数域内值的闭包。
例如
//参数和返回值为空元组()的表达式 ()-> ()
func open() {
//....
}
//参数为空元组返回值为Int的表达式 ()->Int
func open()-> Int {
//return...
}
// Int-> ()
func open(i: Int)->(){
//return()
}
// 参数为空元组,返回值为: 参数为Int 返回值为Int的表达式 (Int)-> Int,完整表达式 ()->Int-Int
func open()-> Int-> Int {
//return...
}
//参数为 ()->Int表达式, 返回值为Int,
func open(i: ()-> Int)-> Int{
//return...
}
最后我的结论就是: 一切能转换成表达式(例如: ()-> Int->Int)的都当成闭包。
我这么理解应该片面,大家评论下。