【问题标题】:Guard operation Swift 2守卫行动 Swift 2
【发布时间】:2015-11-30 19:39:26
【问题描述】:

我使用 Swift 2 和 Xcode 7。

我想知道两者的区别

if condition { ... } else { ... } 

guard ... else ...

【问题讨论】:

标签: ios swift swift2 guard-statement


【解决方案1】:

真正大的区别是当您进行可选绑定时:

if let x = xOptional {
    if let y = yOptional {
        // ... and now x and y are in scope, _nested_
    }
}

对比一下:

guard let x = xOptional else {return}
guard let y = yOptional else {return}
// ... and now x and y are in scope _at top level_

出于这个原因,我经常有多个guard 语句在我进入例程的实质之前。

【讨论】:

【解决方案2】:

if 语句一样,guard 根据表达式的Boolean 值执行语句。与if 语句不同,guard 语句仅在不满足条件时运行。你可以把守卫想象成一个Assert,但不是崩溃,你可以优雅地退出。

参考和代码示例here

【讨论】:

    【解决方案3】:

    要添加到Matt's answer,您可以在单个保护语句中包含多个条件:

    guard let x = xOptional, y = yOptional else { return }
    // ... and now x and y are in scope _at top level_
    

    除了可选绑定之外,保护条件还可以测试布尔结果:

    guard x > 0 else { return }
    

    简而言之,guard 语句的好处是使早期退出在作用域的开头显而易见,而不是将条件进一步隐藏在嵌套的 else 语句中。

    【讨论】:

      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2013-03-31
      • 1970-01-01
      相关资源
      最近更新 更多