Pierwsze wystąpienie klucza będzie zależało od przyjętej metody poszukiwań. Jeśli zakładamy, że ten problem z jakiegoś powodu nie jest tak ważny, możemy zrobić coś takiego:
def value_for(hash, searched_key)
hash.each do |key, value|
return value if key == searched_key
if value.is_a?(Hash)
nested_value = value_for(value, searched_key)
return nested_value if nested_value
end
end
nil
end
Na szybko wymyślone i nieprzetestowane, więc może być kiepskie.