php里guard什么意思,guard关键字到底好在哪里?

请注意:本文适用于Swift 2,IOS9,以及Xcode7.请确保你已经安装了Xcode7.

曾经的样子:pyramids of doom

当一个方法运行的时候,如果要处理需要的情况,通常有两种解决方式:pyramids of doom 或者 early returns。

if firstName != "" {

if lastName != "" {

if address != "" {

// do great code

}

}

}

这就叫做a pyramid of doom

后者看起来是这样

if firstName == "" { return }

if lastName == "" { return }

if address == "" { return }

// do great code

这项技术叫做early returns,因为你从方法中尽可能早的返回了,这意味着你如果一直处在方法中,一切都是安全的。

以上这两种方法都不是很好,第一种过于混乱,而且你的判断越多情况就越糟糕。

第二种,可读性不强,这种方法判断的是相反的条件,我们需要有值的first name,所以检查空string是反向判断。

在swift中还有另外一个问题,就是对optional的处理。

在swift2中,出现了guard,它有如下好处:

1,你的目的明确,你可以告诉guard你需要的情况,而不是反过来,易于理解。

2,任何optional值被guard解包后,一直存在(即便guard已经结束了),所以你依旧可以使用。(在if中如果if结束了,还要重新解包)。

当你要使用if的时候,可以先尝试使用一下guard

guard name.characters.count > 0 else {

throw InputError.NameIsEmpty

}

guard age > 18 else {

return false

}

guard #available(iOS 9, *) else {

return

}

func printName() {

guard let unwrappedName = name else {

print("You need to provide a name.")

return

}

print(unwrappedName)

}

最后一个例子说明了关于optional的好处,也是guard相对于early returns 关键的一个优势。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值