Para crear un símbolo, ya sea de estos trabajos:
42.to_s.to_sym
:"#{42}"
El #inspect
representación de estos espectáculos :"42"
sólo porque :42
no es un símbolo válido literal. Tenga la seguridad de que las comillas dobles no son parte del símbolo en sí.
Para crear un hash, no hay razón para convertir las claves en símbolos, sin embargo. Usted simplemente debe hacer esto:
q_id = (1..100).to_a
my_hash_indexed_by_value = {}
q_id.each{ |val| my_hash_indexed_by_value[val] = {} }
O esto:
my_hash = Hash[ *q_id.map{ |v| [v,{}] }.flatten ]
O esto:
# Every time a previously-absent key is indexed, assign and return a new hash
my_hash = Hash.new{ |h,val| h[val] = {} }
Con todos estos a continuación, puede indexar su picadillo directamente con un entero y obtener una único hash atrás, por ejemplo
my_hash[42][:foo] = "bar"
A diferencia de JavaScript, donde cada clave de un objeto debe ser una cadena, hashes en Ruby aceptar cualquier objeto como la clave.
No creo que eso sea legal. Intenta escribir ': 1' en' irb' y obtendrás un error de sintaxis. – detunized
Como se menciona a continuación,: 1 no es válido. Lo mejor que puedes obtener es: "1". No estoy seguro de por qué esto importa tanto, ya que las comillas no son realmente "parte" del símbolo ... pero es cómo debe definirse por razones de análisis/gramática. –
Quizás debería mostrarnos lo que realmente está tratando de lograr. ¿Por qué siente que necesita números como símbolos para las teclas de su Hash? ¿Cómo va a indexar el hash más adelante o, si lo itera, qué hará con las claves? – Phrogz