在 Swift 中,闭包是一种自包含的函数代码块,可以在代码中被传递和使用。闭包捕获并存储其所在上下文中任意常量和变量的引用。以下是一些关于 Swift 闭包的基本操作:

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