2016-01-10 59 views
4

我很困惑何时使用guard以及何时使用if...else守卫声明和if ... else声明之间的基本区别是什么?

警卫是替换还是替代If语句? 主要的事情想知道什么是Swift语言的guard语句的功能好处?

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

+6

是否[这事先问答](http://stackoverflow.com/questions/30791488/swift-2-guard-keyword)回答你的问题? –

回答

12

使用警卫似乎与使用if似乎没有多大区别,但有了警惕,您的意图更清晰:如果您的条件未得到满足,执行不应继续。另外它具有更短,更易读的优点,所以守卫是一个真正的改进,我相信它会很快被采用。

使用警卫有一个好处,可能会使它对你更有用:如果你用它来展开任何可选项,那些展开的值将留在你的代码块的其余部分。例如:

guard let unwrappedName = userName else { 
return 
} 

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

这是比较直的if语句,在那里展开的值将只提供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

+0

对于我来说,展开的值范围的第二点是很清楚的,但是仍然没有得到当我们必须检查多个条件时,如何通过警戒语句执行提前返回。 – technerd