Swift 面试题
目录

Swift 中什么是闭包表达式 (Closure Expression)?

· 约 3 分钟读完 · 第 51 / 196 章

推荐答案

闭包表达式是 Swift 中一种轻量级的语法,用于编写内联闭包。它可以用来简化代码,特别是在需要传递函数作为参数时。闭包表达式类似于匿名函数,可以捕获和存储上下文中的常量和变量。

本题详细解读

闭包表达式的基本语法

闭包表达式的基本语法如下:

  • parameters:闭包的参数列表,类似于函数的参数。
  • returnType:闭包的返回值类型。
  • in:用于分隔参数列表和闭包体。
  • statements:闭包体内的代码。

闭包表达式的简化

Swift 提供了多种方式来简化闭包表达式:

  1. 类型推断:如果闭包的参数类型和返回值类型可以从上下文中推断出来,则可以省略它们。

  2. 单表达式闭包:如果闭包体只包含一个表达式,则可以省略 return 关键字。

  3. 参数名称缩写:可以使用 $0, $1, $2 等来引用闭包的参数。

  4. 尾随闭包:如果闭包是函数的最后一个参数,则可以将闭包表达式写在函数调用的括号外面。

闭包表达式的捕获值

闭包表达式可以捕获和存储其所在上下文中的常量和变量。即使定义这些常量和变量的原作用域已经不存在,闭包仍然可以在其函数体内引用和修改这些值。

在这个例子中,闭包捕获了 runningTotal 和 amount,并在每次调用时修改 runningTotal 的值。

闭包表达式的使用场景

闭包表达式在 Swift 中非常常见,特别是在以下场景中:

  • 高阶函数:如 map, filter, reduce 等。
  • 异步操作:如网络请求、动画等。
  • 回调函数:如事件处理、通知等。

通过使用闭包表达式,可以使代码更加简洁和易读。