Swift 中 if let 和 guard let 的区别是什么?

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

推荐答案

if let 和 guard let 都是 Swift 中用于处理可选类型(Optional)的语法结构,但它们的使用场景和行为有所不同。

  • if let:用于在条件为真时解包可选值,并在条件块内使用解包后的值。如果可选值为 nil,则条件块不会执行。

  • guard let:用于在条件为假时提前退出当前作用域(如函数、方法或循环)。如果可选值为 nil,则 guard 语句会执行 else 块中的代码,通常用于提前返回或抛出错误。

本题详细解读

if let 的使用

if let 语句用于在可选值不为 nil 时解包并执行相应的代码块。如果可选值为 nil,则跳过该代码块。

在这个例子中,如果 optionalValue 不为 nil,则 unwrappedValue 会被解包并打印出来。如果 optionalValue 为 nil,则执行 else 块中的代码。

guard let 的使用

guard let 语句用于在可选值为 nil 时提前退出当前作用域。它通常用于函数或方法的开头,以确保某些条件满足后才能继续执行后续代码。

在这个例子中,如果 optionalValue 为 nil,则 guard 语句会执行 else 块中的代码,并提前返回。如果 optionalValue 不为 nil,则 unwrappedValue 会被解包,并继续执行后续代码。

主要区别

  1. 作用域:

    • if let 解包后的值只在 if 块内有效。
    • guard let 解包后的值在 guard 语句之后的代码中仍然有效。
  2. 控制流:

    • if let 用于条件为真时执行代码块。
    • guard let 用于条件为假时提前退出当前作用域。
  3. 代码风格:

    • if let 通常用于处理可选值的分支逻辑。
    • guard let 通常用于提前检查并处理错误或无效情况,使代码更简洁易读。