[swift]亲爱的 Erica,请帮我 guard 变量的值为空的情况

[swift]亲爱的 Erica,请帮我 guard 变量的值为空的情况,第1张

概述作者:Erica Sadun,原文链接,原文日期:2016-07-07 译者:粉红星云;校对:aaaron7;定稿:千叶知风 你好, 我想知道针对下面这个在 Swift 中出现的特定情况是否有更优雅的解决方法 -- 假设你想要在继续执行后续的代码前,检测一个特定的变量是否为空;通常是会做相反的事情(检测变量是否为有值)。我一般是这么写的: guard thing == nil else {

作者:Erica Sadun,原文链接,原文日期:2016-07-07
译者:粉红星云;校对:aaaron7;定稿:千叶知风

你好,
我想知道针对下面这个在 Swift 中出现的特定情况是否有更优雅的解决方法 -- 假设你想要在继续执行后续的代码前,检测一个特定的变量是否为空;通常是会做相反的事情(检测变量是否为有值)。我一般是这么写的:

guard thing == nil else {   if let thing = thing {      doSomething(withThing: thing)    }   return}@H_419_9@ 

有没有一个更好的方式来实现呢?我是可以使用 if 语句,但是我喜欢 guard 语句确保验证不通过不执行下面代码。逻辑上如果强制解包也可以,但是。。。(耸肩)

-- Rob

你好,Rob,的确是有简单的多的方法。你用了 if 语句的使用方式套在 guard 中,这样也违背了这个语法的本意 -- 使用 guard 来解包 “thing” 这个变量,失败了就不再执行下面的内容。如果你的 guard 语句的 “else” 下的大括号内容,显著地比一两行要多得多,那你应该是用错了这个语法了。

下面是正确的使用方式:

guard let thing = thing else { return } // 在变量不能被解包的时候退出doSomething(with: thing) // thing 这个变量现在已经解包了@H_419_9@ 

这个代码遵循了Swift一个常见的模式:使用 guard 映射一个可选变量的值。用guard 映射变量让你可以在当前代码块使用相同的变量名( “thing” )。在通过了 guard 语句的时候,你的变量已经解包了,可以直接使用,不用再检验其值不为nil。

避免强制解包是对的。给自己一个挑战,来确保你代码中的每一个 “!” 都是可行的。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。

总结

以上是内存溢出为你收集整理的[swift]亲爱的 Erica,请帮我 guard 变量的值为空的情况全部内容,希望文章能够帮你解决[swift]亲爱的 Erica,请帮我 guard 变量的值为空的情况所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存