当前位置:  开发笔记 > 前端 > 正文

使用guard检查nil而不隐式展开

如何解决《使用guard检查nil而不隐式展开》经验,为你挑选了1个好方法。

我知道周围有一些类似的问题,但我找不到一个特定的问题.我有一个请求,我想检查error密钥的存在.它不存在一切都很好,如果不是我应该处理错误.目前,我实现如下:

if let error = json["error"] {
    // handle error
}
else {
    // handle success
}

我想在这里使用一个保护声明来使成功案例没有缩进.我想出的唯一方法是

guard json["error"] == nil else {
    let error = json["error"]!
    // handle error
} 

// handle success

但这对我来说似乎不对!还有其他方法吗?



1> Fogmeister..:

在你的guard代码中,你必须在else块中有一个return语句.像这样...

guard json["error"] == nil else {
    let error = json["error"]!
    // handle error
    return
}

// handle success

但你是对的.必须强制打开错误并不理想.

所以在这种情况下.我认为这guard是错误的解决方案.而是使用if但从条件块返回.这消除了使用else块的需要.

if let error = json["error"] {
    print(error)
    // handle error
    return
}

// handle success...
// no need for else block. Just return from the if in the error case.

guard let和之间的区别在于if let未打开的可选项的作用域.

如果挡板位于挡块内,则挡板位于挡块外.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有