Per la creazione di un simbolo, uno di questi lavori:
42.to_s.to_sym
:"#{42}"
La #inspect
rappresentazione di questi spettacoli :"42"
solo perché :42
non è un simbolo valida letterale. Siate certi che le virgolette non fanno parte del simbolo stesso.
Per creare un hash, non vi è alcun motivo per convertire le chiavi in simboli, tuttavia. Si dovrebbe fare semplicemente questo:
q_id = (1..100).to_a
my_hash_indexed_by_value = {}
q_id.each{ |val| my_hash_indexed_by_value[val] = {} }
O questo:
my_hash = Hash[ *q_id.map{ |v| [v,{}] }.flatten ]
O questo:
# Every time a previously-absent key is indexed, assign and return a new hash
my_hash = Hash.new{ |h,val| h[val] = {} }
Con tutti questi si può quindi indicizzare il tuo hash direttamente con un intero e ottenere un hash indietro unico, es
my_hash[42][:foo] = "bar"
A differenza di JavaScript, in cui ogni chiave ad un oggetto deve essere una stringa, hash in Ruby accettano qualsiasi oggetto come la chiave.
Non penso che sia legale. Prova a digitare ': 1' in' irb' e otterrai un errore di sintassi. – detunized
Come indicato di seguito,: 1 non è valido. Il meglio che puoi ottenere è: "1". Non sono sicuro del perché questo sia così importante, dato che le virgolette non sono realmente "parte" del simbolo .. ma è come deve essere definito per ragioni di analisi/grammatica. –
Forse dovresti mostrarci cosa stai cercando di realizzare. Perché ritieni di aver bisogno di numeri-come-simboli per le chiavi del tuo Hash? Come procederai all'indicizzazione dell'hash, o se lo itererai, cosa farai con le chiavi? – Phrogz