Joe*_*ano 3 ruby hash ruby-on-rails key
我有一个哈希,我正在寻找其中的某个键.但有时候hash自己也可能是零.在这种情况下,我不想hash["key"]返回undefined method '[]' for nil:NilClass错误.我想要它返回nil.
对于其他类似的情况,我可以使用try,像这样:nil.try(:key) => nil但我无法使用相同的方法来处理我的哈希.
换句话说,我正在寻找一种方法,结果是这样的:
> @hash = nil
> @hash.try(:["key"])
=> nil
Run Code Online (Sandbox Code Playgroud)
各种to_X方法通常是方便的方法,可以安静地将nils 转换为您真正感兴趣的空实例,而不会使用明确的条件复杂化您的逻辑.
在您的情况下,您可以利用Hash#to_h返回哈希本身并NilClass#to_h返回空哈希:
> hash = nil
> hash.to_h['key']
=> nil
> hash = { 'key' => 11 }
> hash.to_h['key']
=> 11
Run Code Online (Sandbox Code Playgroud)
有时这比明确的噪音少if,有时则不然.
你描述的情况(hash = nil)不是"缺少哈希键",它根本不是哈希.
除了其他答案,另一种方式可能是Ruby(2.3)
hash&.fetch("key", nil)
Run Code Online (Sandbox Code Playgroud)
要么:
(hash || {})["key"]
Run Code Online (Sandbox Code Playgroud)
nil如果哈希是错误的,nil或者如果它丢失了密钥,它们都将返回.
| 归档时间: |
|
| 查看次数: |
511 次 |
| 最近记录: |