2011-02-23 13 views
19

Ho il seguente:Rubino convertire array hash nidificato

value = 42 
array = ["this","is","a","test"] 

come posso convertire che per ottenere questo

{ "this" => { "is" => { "a" => { "test" => 42 } } } } 

l'array è sempre piatta.

Grazie!

+1

Ora che è una struttura di dati folle ... sarebbe capita di avere alcuna giustificazione? – delnan

+2

@delnan "hi.i.am.some.kind.of.path = value" da unire in un dump di hash yaml esistente. – Mauricio

risposta

71

Prova questo:

h = array.reverse.inject(value) { |a, n| { n => a } } 
+3

Wow, è davvero lucido. –

+0

incredibile ... davvero incredibile. – Mauricio

+0

La parte più difficile di questo era capire come esprimere la mia domanda su SO. "Nested" era il punto di svolta;) –