[笔记] Swift基础 闭包

89 阅读1分钟

闭包

闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数(Lambdas)比较相似。

闭包表达式

闭包表达式语法有如下的一般形式:

{ (parameters) -> return type in
    statements
}

闭包表达式参数 可以是 in-out 参数,但不能设定默认值。如果你命名了可变参数,也可以使用此可变参数。元组也可以作为参数和返回值。 下面的例子展示了之前 backward(::) 函数对应的闭包表达式版本的代码:

reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in
    return s1 > s2
})

根据上下文推断类型

reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } )

单表达式闭包的隐式返回

reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } )

参数名称缩写

reversedNames = names.sorted(by: { $0 > $1 } )

在这个例子中,00 和 1 表示闭包中第一个和第二个 String 类型的参数。

运算符方法

reversedNames = names.sorted(by: >)

尾随闭包

值捕获

闭包是引用类型

逃逸闭包

自动闭包