Для создания символа выполните одно из следующих действий:
42.to_s.to_sym
:"#{42}"
Представление #inspect
этих шоу :"42"
только потому, что :42
не является допустимым литералом Symbol.Будьте уверены, что двойные кавычки не являются частью самого символа.
Однако для создания хэша нет смысла преобразовывать ключи в символы.Вы должны просто сделать это:
q_id = (1..100).to_a
my_hash_indexed_by_value = {}
q_id.each{ |val| my_hash_indexed_by_value[val] = {} }
Или это:
my_hash = Hash[ *q_id.map{ |v| [v,{}] }.flatten ]
Или это:
# Every time a previously-absent key is indexed, assign and return a new hash
my_hash = Hash.new{ |h,val| h[val] = {} }
С помощью всего этого вы можете затем индексировать свой хэш напрямуюс целым числом и возвращает уникальный хеш, например
my_hash[42][:foo] = "bar"
В отличие от JavaScript, где каждый ключ к объекту должен быть строкой, хэши в Ruby принимают любой объект в качестве ключа.