2011-02-23 7 views
19

Tengo el siguiente:Rubí convertir matriz al resumen anidada

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

¿Cómo puedo convertir que para conseguir este

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

la matriz es siempre plana.

¡Gracias!

+1

Eso sí que es una estructura de datos loco ... pasaría a tener ninguna justificación? – delnan

+2

@delnan "hi.i.am.some.kind.of.path = value" para fusionar en un volcado de hash yaml existente. – Mauricio

Respuesta

71

Prueba esto:

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

Guau, eso es realmente astuto. –

+0

increíble ... realmente increíble. – Mauricio

+0

La parte más difícil de esto fue averiguar cómo expresar mi pregunta en SO. "Anidado" fue el punto de inflexión;) –

Cuestiones relacionadas