¿Hay alguna forma de aplanar un hash en una cadena, con delimitadores opcionales entre claves y valores, y pares clave/valor?Aplanar el hash en un hilo en Ruby
Por ejemplo, print {:a => :b, :c => :d}.flatten('=','&')
debe imprimir a=b&c=d
escribí algo de código para hacer esto, pero me preguntaba si había una manera más ordenada:
class Hash
def flatten(keyvaldelimiter, entrydelimiter)
string = ""
self.each do
|key, value|
key = "#{entrydelimiter}#{key}" if string != "" #nasty hack
string += "#{key}#{keyvaldelimiter}#{value}"
end
return string
end
end
print {:a => :b, :c => :d}.flatten('=','&') #=> 'c=d&a=b'
Gracias
Puede simplificar aún más esto. Ver mi respuesta para más detalles. Lo esencial es reemplazar '| k, v |' con '| e |' que hace que 'e' sea una matriz a la que puedes llamar 'e.join (' = ')' activado. –
cómo hacer lo inverso para obtener un hash – jenuine