Swift 闭包的认识

1.闭包定义

swift语言中可以使用一块独立的代码块替代函数的定义称独立的代码块为闭包

//闭包的格式:

func sumAAndB(a: Int,b: Int) ->Int {
    return a + b
}
print(sumAAndB(10, b: 20))

//<1>使用闭包实现两个数的和

var sum: (Int,Int)->Int = {(a: Int,b: Int)->Intin

return a + b

}

//[注意]闭包不调用和没有定义是一样的里面的语句块永远不会执行

2.闭包的简化(closure)

//<1>当执行语句只有一个表达式的时候 return关键字可以缺省

var closure1 = {(a: Int,b: Int) -> Intin

a > b ? a : b

}

print(closure1(10,20))

sortArr(&array123, method: {(a: Int,b: Int)->Boolin

a > b

})

print(array123)

//<2>当执行语句只有一个表达式而且表达式的结果类型可以推断出来那么return关键字和返回值类型可以同时缺省

var closure2 = {(a: Int,b: Int) in

a > b ? a : b

}

print(closure2(100,10000))

sortArr(&array123, method: {(a: Int,b: Int) in

a < b })

print(array123)

//<3>当参数的类型已知并且满足上面<2>的条件参数的名称可以缺省参数的类型可以缺省返回值类型可以缺省 return关键字可以缺省 in也缺省

var closure3: (Int,Int)->Int  = {$0 > $1 ? $0 : $1}

print(closure3(-100,0))

sortArr(&array123, method: {$0 > $1})

print(array123)

//<4>当参数个数为两个并且满足<3>的条件闭包中直接添加运算符号就可以

sortArr(&array123, method: <)

print(array123)

3.尾随闭包

//当函数最后一个形参是函数类型的变量时对函数类型的变量赋值时需要使用闭包那么闭包传值的书写位置可以放在所有参数列表之外不放在参数列表的最后位置 我们称这种写法为尾随闭包

//定义函数实现两个数的和和差

func SumAndSub(a: Int,b: Int,method: (Int,Int)->Int) {

print(method(a,b))

}

SumAndSub(10, b: 20, method: {(a: Int,b: Int)->Intin

return a + b

})

SumAndSub(100, b: 200, method: -)

SumAndSub(0, b: 10){$0 - $1}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容