Swift编程 Swift快速入门

Swift学习笔记-闭包

2018-10-22  本文已影响3人  土豆吞噬者

闭包(closure)是一种更加紧凑,轻量的匿名函数,类似于Java中的lambda表达式

swift中的闭包语法如下

{(parameters)->returnType in
...
}

接下来我们看一段数组排序代码, 该代码将函数sortAsc当做参数传递

let counts=[1,10,6,2,50,8,24]

func sortAsc(n1:Int,n2:Int)->Bool
{
    return n1<n2
}
//[1, 2, 6, 8, 10, 24, 50]
print(counts.sorted(by: sortAsc))

由于闭包也是函数的一种,所以我们可以使用闭包语法修改上面的代码

let counts=[1,10,6,2,50,8,24]

print(counts.sorted(by: {
    (n1:Int,n2:Int) -> Bool in
    return n1<n2
}))

闭包可以利用swift的类型推断系统,所以我们可以省略类型信息
由于return n1<n2会返回Bool,所以返回值类型可以省略
由于这里只有一个表达式return n1<n2,所以return语句可以省略

let counts=[1,10,6,2,50,8,24]
print(counts.sorted(by: {n1,n2 in n1<n2}))

使用快捷参数名省略参数命名和in,其中0代表第一个参数,1代表第二个参数,依此类推

let counts=[1,10,6,2,50,8,24]
print(counts.sorted(by: {$0<$1}))

如果闭包是函数的唯一参数,则可以省略圆括号以及参数名

let counts=[1,10,6,2,50,8,24]
print(counts.sorted{$0<$1})
上一篇 下一篇

猜你喜欢

热点阅读