我最近了解到你可以使用rescue
在一行代码上,以防该行出现问题(请参阅http://www.rubyinside.com/21-ruby-tricks-902.html http://www.rubyinside.com/21-ruby-tricks-902.html提示#21)。我有一些代码曾经看起来像这样:
if obj['key'] && obj['key']['key2'] && obj['key']['key2']['name']
name = obj['key']['key2']['name']
else
name = ''
end
随着rescue
方法,我相信我可以将该代码更改为如下所示:
name = obj['key']['key2']['name'] rescue ''
如果在访问哈希的任何级别抛出 nil 异常,它应该被救援捕获并给我 '',这就是我想要的。我也可以选择将名称设置为nil
如果这是期望的行为。
这样做有任何已知的危险吗?我这么问是因为这看起来好得令人难以置信。我有太多丑陋的代码,我很想摆脱它,就像第一个代码示例一样。
读起来不错!但这会影响你的表现。在我的经验中rescue
触发时速度慢得多,未触发时速度稍慢。在所有情况下if
是比较快的。另一件需要考虑的事情是,不应预期出现异常,并且您有点使用此代码。拥有如此深层嵌套的哈希可能是一种需要重构的好味道
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)