在Swift中,除了if、switch分支结构之外,又增加了一种分支结构——guard。
guard语句与if语句非常类似,可以判断一个条件为true情况下执行某语句,否则终止或跳过执行某语句。它的设计目的是替换复杂if-else语句的嵌套,提高程序的可读性,在某些情况下可以取得很好的效果。
guard的结构如下:
guard 条件表达式 else {
语句
}
语句组
当条件表达式为true时,跳过else语句中的内容,执行语句组内容,条件表达式为false时执行else语句中的内容。
接下来看一个对比:(创建一个函数判断Blog结构体中的结构是否完整)
struct Blog {
let name: String?
let URL: String?
let Author: String?
}
func ifLongStyleBlog(blog: Blog) {
if let blogName = blog.name {
print("这篇博客名: \(blogName)")
if let blogAuthor = blog.Author {
print("这篇博客由\(blogAuthor)写的")
if let blogURL = blog.URL {
print("这篇博客网址: \(blogURL)")
} else {
print("这篇博客没有网址!")
}
} else {
print("这篇博客没有作者!")
}
} else {
print("这篇博客没有名字!")
}
} //if-else结构嵌套看起来非常的复杂且混乱,不便于阅读
func guardlongStyleBlog(blog: Blog) {
guard let blogName = blog.name else {
print("这篇博客没有名字!")
return
}
print("这篇博客名: \(blogName)")
guard let blogAuthor = blog.Author else {
print("这篇博客没有作者!")
return
}
print("这篇博客由\(blogAuthor)写的")
guard let blogURL = blog.URL else {
print("这篇博客没有网址!")
return
}
print("这篇博客网址: \(blogURL)")
} //可以清楚地看出guard大大地提高了程序的可读性