美文网首页ios知识积累程序员
SwiftCafe 快报 - guard 关键字语法

SwiftCafe 快报 - guard 关键字语法

作者: SwiftCafe | 来源:发表于2015-10-18 08:49 被阅读305次
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

相关文章

  • SwiftCafe 快报 - guard 关键字语法

    我们来看一个 guard 关键字的例子: 这里的 guard 关键字,判读了 UIImage 是否创建成功,如果没...

  • SwiftCafe 快报 - defer 关键字

    defer 关键字也是 Swift 2.0 中提供的新语法,就像是上期中我们提到的 guard 关键字一样。都是 ...

  • SwiftCafe 快报 - Live Photos

    Live Photos 是 iOS 9 的一个新特性,它提供相对于传统照片更生动的展现方式。当用户按下拍照键的时候...

  • Swift语法点

    guard语法 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。但与if...

  • Swift-guard关键字

    1.guard关键字必须使用在函数中。2.guard关键字必须和else同时出现。3.guard关键字只有条件为f...

  • swift 中 guard 关键字的使用

    注意事项 1.guard关键字必须使用在函数中。 2.guard关键字必须和else同时出现。 3.guard关键...

  • Swift 中guard 与 if 的理解

    guard 语法很强大,if能做的guard都能做,反过来,否之。话是这么一说, 其实还是guard的语法规定,决...

  • swift 语法糖

    if let 与 guard 语法糖 话说if let 和 guard 只是语法糖,没有也可以,但有了可以使得代码...

  • SwiftCafe 快报 - Array.contains

    而在 Swift 2.0 中,contains 被作为 Array 的一方法来使用了。所以我们只需这样调用即可: ...

  • SwiftCafe 快报 - 了解闭包

    闭包(Closure) 是现代开发语言的必备特性,极大的提高了我们的开发效率。 关于闭包,你可以把它理解为一种特殊...

网友评论

    本文标题:SwiftCafe 快报 - guard 关键字语法

    本文链接:https://www.haomeiwen.com/subject/npeacttx.html