gpt4 book ai didi

ios - IF LET 与 GUARD LET 中的返回语句

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:26 29 4
gpt4 key购买 nike

看下面两个使用相同代码的场景:

使用 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 语句,它们的用途相同,那么有什么区别,哪个更好?

编辑:-

问题是一般性的陈述,使用其中任何一个都很好,但是当我们有错误来处理哪个最好使用时?

最佳答案

首先,它们都没有得到正确实现。

  • peripheral.services! 中,如果 services 为 nil,它将崩溃。
  • return 语句 - 两者都不需要 return,您可以将其从 if-let 中删除,一切都会正常进行
  • guard 优于 if-let 的好处是它减少了 if-else 括号,从而产生更多可读代码
  • 如果您关心 block 作用域外的变量值,请使用guard,考虑if-let,您只能在 block 内使用未包装的变量。
  • 使用 if-let 进行少量变量解包,并且解包变量的值不需要在 block 范围之外
  • 使用 guard-else 在 block 作用域外使用解包变量
  • 如果你打算在 block 范围之外使用error对象(guard block 的主要用途)然后使用guard-else否则使用if-让

关于ios - IF LET 与 GUARD LET 中的返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45937461/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com