Existe-t-il un moyen d'aplatir un hachage dans une chaîne, avec des délimiteurs optionnels entre les clés et les valeurs, et des paires clé/valeur?Aplatissement de la hachage dans une chaîne dans Ruby
Par exemple, print {:a => :b, :c => :d}.flatten('=','&')
devrait imprimer a=b&c=d
j'ai écrit un code pour le faire, mais je me demandais s'il y avait une façon plus propre:
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'
Merci
Vous pouvez encore simplifier cela. Voir ma réponse pour plus de détails. L'essentiel est de remplacer '| k, v |' par '| e |', ce qui fait de 'e' un tableau que vous pouvez appeler' e.join ('=') '. –
comment faire l'inverse pour obtenir un hachage – jenuine