Swift 新语法 guard 语法 与 if else 对比

原文地址:http://www.jianshu.com/p/3a8e45af7fdd
直接看代码
func fooManualCheck(x:Int?) {
if x ==nil || x <= 0 {
return
}
x!.description
}
//1.你是在检查一个不符合你期望的条件,而非检查你想要的值。如果你加了一堆像这样的条件判断,代码就变的不好理解。你在这里其实是等着你的条件通不过。
//2.如果前面条件判断的结果不符合了,你还得将你的变量强制拆包。

func fooBinding(x:Int?) {
    iflet x = x where x >0 {
        //有值使用x
        x.description
    }
}
//这个函数没有了第一个函数的2个缺陷
//你可以想象在你的代码被执行之前,如果嵌套了好多需要被匹配的条件判断,这会变的多难读懂。

func fooGuard(x:Int?) {
    guardlet x = x where x >0 else {
        print("1111111")
        //变量不符合条件时执行下面代码
        return
    }
    x.description
}
//是对你所期望的条件做检查,而非不符合你期望的。又是和assert很相似。如果条件不符合,guard的else语句就运行,从而退出这个函数。
//如果通过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 -这个例子中该范围是fooGuard函数内部。这是一个很重要,却有点奇怪的特性,但让guard语句十分实用。    
//对非可选类型的变量这种用法也是奏效的:
func fooNonOptionalGood(x:Int) {
    guard x >0 else {

        //变量不符合条件判断时执行下面代码
        return
    }
    //使用x
}

func fooNonOptionalBad(x:Int) {
    if x <=0 {
        return
    }
    //使用x
}

使用 guard 语句 你必须考虑条件失败的情况
使用guard 让代码更宜读好维护

也可以看看下面几篇文章
http://swift.gg/2015/08/06/swift-guard-better-than-if/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值