我使用Swift 2和Xcode 7。
我想知道
之间的区别new
和
if condition { ... } else { ... }
答案 0 :(得分:4)
当你进行可选的绑定时,真正的重大区别是:
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
语句。
答案 1 :(得分:2)
与if
语句类似,guard
基于表达式的Boolean
值执行语句。与if
语句不同,guard
语句仅在不满足条件时运行。你可以把警卫想象成Assert
,但不是崩溃,你可以优雅地退出。
参考和代码示例here。
答案 2 :(得分:0)
要添加到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语句中进一步隐藏条件。