guard

1 保证一个变量真的存在并符合一个条件:
缺点:
1.你是在检查一个不符合你期望的条件,而非检查你想要的值。如果你加了一堆像这样的条件判断,代码就变的不好理解。你在这里其实是等着你的条件通不过
2.如果前面条件判断的结果不符合了,你还得将你的变量强制拆包。
func fooManualCheck(x: Int?) {
    if x == nil || x <= 0 {
        // 不符合值的要求时,写点代码
        return
    }

    // 使用x
    x!.description
}
2 Swift通过可选绑定 保证一个变量真的存在并符合一个条件:
缺点:
    代码都放在了所有条件判断中,而不是之后,如果嵌套了好多需要被匹配的条件判断,这会变得很难读懂。
优点:
解决了1的缺点
func fooBinding(x: Int?) {
    if let x = x where x > 0 {
        // 使用x
        x.description
    }

    // 如果值不符合条件判断,就执行下面的代码
}
2 Swift通过guard 保证一个变量真的存在并符合一个条件:
保镖模式(Bouncer Pattern):
    对每个条件逐一做检查,如果不符合条件判断就退出
优点:
    1.是对你所期望的条件做检查,而非不符合你期望的。又是和assert很相似。如果条件不符合,guard的else语句就运行,从而退出这个函数
    2.如果通过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 - 这个例子中该范围是fooGuard函数内部。这是一个很重要,却有点奇怪的特性,但让guard语句十分实用。
    3.对你所不期望的情况早做检查,使得你写的函数更易读,更易维护。
func fooGuard(x: Int?) {
    guard let x = x where x > 0 else {
        // 变量不符合条件判断时,执行下面代码
        return
    }

    // 使用x
    x.description
}

原文:Swift的Guard语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值