1. 闭包基本语法:
// 闭包表达式
let greeting = {
print("Hello, Swift!")
}
// 调用闭包
greeting()
这是一个没有参数和返回值的简单闭包的例子。
2. 带参数和返回值的闭包:
// 闭包接受两个参数并返回它们的和
let add: (Int, Int) -> Int = { (a, b) in
return a + b
}
// 调用闭包
let result = add(3, 4)
print("Sum: \(result)")
在这个例子中,add 是一个闭包变量,它接受两个整数参数并返回它们的和。
3. 简化的闭包表达式:
// 简化的闭包表达式
let multiply: (Int, Int) -> Int = { $0 * $1 }
// 调用闭包
let product = multiply(2, 5)
print("Product: \(product)")
在这个例子中,使用 $0 和 $1 表示闭包的第一个和第二个参数。
4. 将闭包作为参数传递:
func operate(_ a: Int, _ b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
// 调用函数并传递闭包作为参数
let result = operate(3, 4, operation: { $0 + $1 })
print("Result: \(result)")
在这个例子中,operate 函数接受两个整数和一个闭包参数,用于指定操作。
5. 逃逸闭包:
如果闭包作为函数参数被传递,并且在函数返回之后执行,需要使用 @escaping 关键字。
var completionHandlers: [() -> Void] = []
func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) {
completionHandlers.append(completionHandler)
}
这是因为闭包可能在函数返回之后执行,所以需要逃逸出函数的作用域。
这些是一些基本的闭包操作。闭包是 Swift 中强大而灵活的特性,特别适用于函数式编程范式。
转载请注明出处:http://www.pingtaimeng.com/article/detail/6847/Swift