swift闭包

记录下学习swift的过程
正常闭包格式
{(参数列表) -> 返回值 in

}
如例

var sort = {(i1:Int,i2:Int)->Bool in return i1 > i2}

简化
按照案例,简化成这样

var sort = {i1,i2 in return i1 > i2}

会报错

/Users/admin/xcode/HelloYoungCoder/HelloYoungCoder/AppDelegate.swift:236:40: Ambiguous use of operator '>'

可能是因为swift版本的原因吧

疑惑的到解答 ,之前有问题的地方是用的方式不对

1,简化掉参数类型,swift支持类型推导,所以可以简化掉闭包函数参数的类型

var sortB:(Int,Int)->Bool = {i1,i2 in return i1 > i2}

2,简化掉return,因为函数主题只有一行,所以可以省略掉return

var sortC:(Int,Int)->Bool = {i1,i2 in i1 > i2}

3,简化参数名称,swift为闭包函数提供了名称缩写功能,所简化掉参数名称

var sortD:(Int,Int)->Bool = {$0 > $1}

4,利用运算符函数简化,

var sortG:(Int,Int)->Bool = (>)

标签: swift, 闭包

添加新评论