guard语句和if ... else语句之间的基本区别是什么?

时间:2016-01-10 07:23:23

标签: swift swift2

我对何时使用guard以及何时使用if...else感到困惑。

警卫是否是If语句的替代或替代? 主要的是想知道guard语句对Swift语言有什么功能上的好处?

任何帮助清除这种情况的人都将不胜感激。

1 个答案:

答案 0 :(得分:15)

使用警卫可能与使用if似乎没什么不同,但是使用警卫你的意图更清楚:如果你的条件不满足,执行不应该继续。此外,它具有更短,更易读的优点,因此防护是一项真正的改进,我相信它会很快被采用。

使用Guard会有一个好处,可能会让它对你更有用:如果你用它来打开任何选项,那些那些未包装的值会留在你身边,供你在其余的代码块中使用。例如:

   guard let unwrappedName = userName else {
return
}

print("Your username is \(unwrappedName)")

这与直接if语句相比,其中unwrapped值仅在if块中可用,如下所示:

if let unwrappedName = userName {
print("Your username is \(unwrappedName)")
} else {
return
}

// this won't work – unwrappedName doesn't exist here!
print("Your username is \(unwrappedName)")

https://www.hackingwithswift.com/swift2