【发布时间】:2017-08-29 11:02:02
【问题描述】:
看下面两个代码相同的场景:
使用 IF LET:
public func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?){
if let error = error {
print("error: \(error.localizedDescription)")
return
}
for service in peripheral.services!
{
print("discovered service is ::::",service)
}
}
使用 GUARD LET:
public func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?){
guard let _ = error else{
for service in peripheral.services!
{
print("discovered service is ::::",service)
}
return
}
}
他们都在使用return statement,而且他们的目的都是一样的,那么有什么区别,哪个更好?
编辑:-
问题在于一般性陈述,使用其中任何一个都可以,但是当我们遇到错误来处理哪个最好使用时?
【问题讨论】:
-
这是一个奇怪的函数,会传入这样的错误。因此,它不太适合这种比较。
-
@Shubham Mishra 再多一点 + 带守卫 let is ,它还提供了 break 的使用,主要目的是保持代码的干净和可读性。
-
问题是一般性陈述,这很好,但是当我们有错误来处理最好使用的?
-
@ShubhamMishra 它是您想要的选择。在引入 guard let 之前,我们使用了 if let。但这让代码看起来很复杂,有很多嵌套和额外使用 {}。这被guard let克服了。用例与处理零值崩溃的用例相同,但也有助于保持代码干净和易于理解。