Итак, у меня есть хэш, и для каждого уровня хэша я хочу сохранить его ключ и значение. Проблема в том, что значение может быть другим массивом хэшей. Кроме того, этот хэш может содержать пары ключевых значений, где значение снова является другим массивом хэшей и т.д. И т.д. Кроме того, я не буду знать, насколько глубоко вложен каждый хеш. Чтобы привести пример:
{
:key1 => 'value1',
:key2 => 'value2',
:key3 => {
:key4 => 'value4',
:key5 => 'value5'
},
:key6 => {
:key7 => 'value7',
:key8 => {
:key9 => 'value9'
}
}
}
.. И так далее. Я хочу сохранить каждый ключ, пару значений и идентификатор его родителя. Я полагаю, что это, вероятно, будет сделано рекурсивно, я просто не уверен, потому что я не знаком с рекурсивными функциями. Я знаю, как обычно выполнять итерацию данных:
myHash.each {|key, value|
...Do something with the key and value ...
}
И поэтому я предполагаю, что рекурсивный вызов будет примерно таким:
def save_pair (myHash)
myHash.each {|key, value|
if(value.class != Hash) ? Pair.create(key, value) : save_pair(value)
}
end
Это не проверено, и я до сих пор не знаю, как включить сохранение идентификаторов родителей независимо.