У меня есть вложенный хэш внутри набора, в моем приложении rails, и я пытаюсь получить доступ ко всем значениям одного ключа перечислимым способом.В наборе хэшей, как получить доступ ко всем элементам одного ключа в качестве перечислимого объекта?
Так у меня есть набор, который выглядит следующим образом (а не фактические имена моих ключей и значений)
my_set=[{:foo=>"lion", :boolean1=>true, :boolean2=>false, :boolean3=>true},
{:foo=>"monkey", :boolean1=>false, :boolean2=>true, :boolean3=>true},
{:foo=>"elephant", :boolean1=>false, :boolean2=>true, :boolean3=>true}
]
Я хочу, чтобы иметь возможность перебрать все значения обув. Есть ли лучший способ сделать это, чем следующим образом?
foo_array=[]
my_set.each do |hash|
foo_array<<hash[:foo]
end
Я не смог найти что-либо на доступ все значения: обув в моем наборе, только на доступ к отдельным элементам в вложенных перечислимых, которые я знаю, как это сделать. Спасибо.
Спасибо. На самом деле это не то, как я объявляю набор, набор объявляется с помощью Set.new, а затем хеши объединяются в него, итерации по другому массиву. Я пытался представить, как набор заканчивается, когда мне нужно получить foo из него. Я думаю, что картографическая версия лучше, потому что это меньше кода для одной и той же вещи. – ctaymor
Очень важно, чтобы вы точно указали, как вы определяете свои данные. Использование набора имеет побочные эффекты и последствия, которых нет для массивов. Я не уверен, почему вы используете Set, хотя, поскольку он не собирается вас покупать. –
хорошо, спасибо. Я отредактировал вопрос, чтобы сделать это более ясным, и постараюсь учесть это в памяти в будущем. Я довольно новичок в этом. Я использую Set вместо Array, потому что я хочу, чтобы его побочный эффект не позволял дублировать. Я не хочу дублировать свой хэш. Набор заполняется при итерации по массиву, в котором несколько элементов могут потенциально вставлять одну и ту же вещь в Set, если это массив. При наборе я получаю только одно появление каждого хэша в наборе. – ctaymor