ios知识积累程序员

SwiftCafe 快报 - guard 关键字语法

2015-10-18  本文已影响305人  SwiftCafe
guard 关键字
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

上一篇 下一篇

猜你喜欢

热点阅读