我有一个散列,我正在寻找其中的某个键。但有时 hash
本身可能为 nil。在这种情况下,我不希望 hash["key"]
返回 undefined method '[]' for nil:NilClass
错误。我希望它返回 nil
。
在其他类似情况下,我可以使用 try
,如下所示:nil.try(:key) => nil
但我无法获得相同的方法使用我的哈希。
换句话说,我正在寻找一种产生如下结果的方法:
> @hash = nil
> @hash.try(:["key"])
=> nil
最佳答案
各种 to_X
方法通常是将 nil
安静地转换为您真正感兴趣的空实例的便捷方法,而无需使用显式条件使您的逻辑复杂化。
在您的情况下,您可以利用 Hash#to_h
返回哈希本身和 NilClass#to_h
返回一个空哈希:
> hash = nil
> hash.to_h['key']
=> nil
> hash = { 'key' => 11 }
> hash.to_h['key']
=> 11
有时这比显式的 if
噪音小,有时则不然。
关于ruby-on-rails - 我怎样才能返回 nil 而不是丢失哈希键的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479547/