SwiftCafe 快报 - guard 关键字语法
2015-10-18 本文已影响305人
SwiftCafe

guard
关键字是 Swift 2.0
新引入的语法,正如其名,他就像一个卫士一样,保护者代码的执行。
我们来看一个 guard
关键字的例子:
func apply() -> Bool {
guard let image = UIImage(named:"some")
else { return false }
...
}
这里的 guard
关键字,判读了 UIImage 是否创建成功,如果没有创建成功,在 else 分支中会将函数直接返回。
那么聪明机智的朋友们可能会说了,这个和 if let…
这种形式的 Optional Chaining
有什么区别呢,用同样的 if
判断不是也能实现么:
func apply() -> Bool {
if let image = UIImage(named:"some") {
// do something...
} else {
return false
}
}
看起来好像是那么回事儿,不过嘛,我们可以再来看一个例子:
func handleJSON(data: [String:[String: String]]) -> String? {
if let item = data["app"] {
if let name = item["name"] {
if name == "swift" {
if let age = item["age"] {
return age
} else {
return nil
}
} else {
return nil
}
}else {
return nil
}
}else {
return nil
}
}
这个方法的逻辑其实很简单,只是取得数据集合种名字叫做 "swift" 的 age 属性,如果能够正常取到,就返回 age 的值,如果不能取到,就返回 nil。
上面的代码就是我们使用 if 判断来达成这个逻辑实现的方法,我们再来看看如何用 guard
语句来实现这个流程:
func handleJSON(data: [String:[String: String]]) -> String? {
guard let item = data["app"] else { return nil }
guard let name = item["name"] else { return nil }
if name == "swift" {
guard let age = item["age"] else { return nil }
return age
}
}
是不是发现简单了很多呢,同样的逻辑, 使用 guard
语法来处理,�代码量少了很多。
更多精彩内容可关注微信公众号:
swift-cafe