Вы также можете Enumerable # zip с диапазоном, а затем преобразовать Array # to_h :
(1..my_array.size).zip(my_array).to_h
#=> {1=>{"apples"=>5}, 2=>{"oranges"=>12}}
Как это работает
my_array.size #=> 2
возвращает размер массива в виде целого числа.
(1..my_array.size)
это включающий диапазон , который перечисляет целые числа форму 1
до размера массива, 2
в данном случае.
A Range отвечает на Enumerable # zip , поэтому, например, вы можете сделать это, получив массив пар:
(1..3).zip(:a..:c) #=> [[1, :a], [2, :b], [3, :c]]
Наконец, массив пар можно преобразовать в хэш, см. Array # to_h :
[[1, :a], [2, :b], [3, :c]].to_h #=> {1=>:a, 2=>:b, 3=>:c}
Поскольку диапазон состоит из целых чисел, ключи хеша являются целыми.Но вы можете настроить строку кода, чтобы получить строки в качестве ключей.