Преобразовать массив хешей в хеши без массива и перезаписи
Задаю переменной hash массив хешей:
[12] pry(main)> hash = {:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}
=> [{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}]
Но при использовании данных в цикле получаю ошибку "TypeError: can't cast Hash".
Вопрос: как преобразовать массив хешей в хеши без массива и перезаписи?
Чтобы переменная hash соответствовала следующему:
{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}
Ответы (1 шт):
Ты хочешь вынуть из массива хэши и сохранить в переменной как указано?
{:sku=>"1234", :name=>"Test"}, {:sku=>"5678", :name=>"Test2"}
Это невозможно, потому что в результате получается группа хэшей, которая не может существовать сама по себе. Чтобы работать с этими хэшами как c одним объектом (например, обойти в цикле и изменить значения), нужно поместить их в контейнер или объединить в один хэш, но тут тупик: вкладывать их в контейнер бессмысленно, потому что они уже там судя по твоему вопросу — в том самом массиве из которого ты пытаешься их вытащить, а объединить их в хэш нельзя, потому что у хэша ключи всегда уникальны и в результате объединения ты потеряешь значения.
Обычно такой клинч говорит о том, что ты пытаешься решить какую-то проблему неправильным путем. Тебе нужно более подробно объяснить, какую задачу ты пытаешься решить таким способом, а еще лучше показать код.