我最近了解到,您可以rescue
在一行代码上使用,以防该行出现问题(请参阅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
如果这是所需的行为,我也可以选择将名称设置为。
这样做有什么已知的危险吗?我问是因为这似乎好得令人难以置信。我有很多丑陋的代码,我很想摆脱它,看起来就像第一个代码示例。