我对何时使用guard
以及何时使用if...else
感到困惑。
警卫是否是If语句的替代或替代?
主要的是想知道guard
语句对Swift语言有什么功能上的好处?
任何帮助清除这种情况的人都将不胜感激。
答案 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)")