hash = {'name' => { 'Mike' => { 'age' => 10,'gender' => 'm' } } }
我可以通过以下方式访问年龄:@H_404_5@
hash['name']['Mike']['age']
如果我使用Hash#fetch方法怎么办?如何从嵌套哈希中检索密钥?@H_404_5@
Hash#fetch
正如塞尔吉奥所说,做到这一点的方式(不为自己创造一些东西)将是一系列的获取方法:@H_404_5@
hash.fetch('name').fetch('Mike').fetch('age')
class Hash def fetch_path(*parts) parts.reduce(self) do |memo,key| memo[key.to_s] if memo end end end # usage hash.fetch_path('name','Mike','age')
您可以轻松修改它以使用#fetch而不是#[](如果您愿意).@H_404_5@