У меня есть следующий код:Преобразовать массив хэш
class A
end
class B
end
a1 = A.new
a2 = A.new
b1 = B.new
b2 = B.new
array = [a1, a2, b1, b2]
hash = {}
array.each do |obj|
if hash[obj.class] = nil
hash[obj.class] = []
else
hash[obj.class] << obj
end
end
Я хочу хэш равным
{ A => [a1,a2], B => [b1,b2] }
, но это говорит мне, что я не могу использовать оператор <<
.
Эй Брух, что об использовании двух приравнивает вместо одного для вашего состояния. – oldergod
В конечном итоге с {A => [a2], B => [b2]} – mikeglaz
Если есть одна вещь, которую должен изучить каждый разработчик Ruby, это понимание и отладка ошибок «NoMethodError: undefined method for nil: NilClass». –