Eu tenho uma matriz de hashes assim:
[{"testPARAM1"=>"testVAL1"}, {"testPARAM2"=>"testVAL2"}]
E estou tentando mapear isso em um único hash assim:
{"testPARAM2"=>"testVAL2", "testPARAM1"=>"testVAL1"}
Eu consegui usando
par={}
mitem["params"].each { |h| h.each {|k,v| par[k]=v} }
Mas eu queria saber se é possível fazer isso de uma forma mais idiomática (de preferência sem usar uma variável local).
Como posso fazer isso?
ruby-on-rails
ruby
arrays
hash
Bart Platak
fonte
fonte
input.reduce(:merge)
?merge!
vezmerge
disso, o primeiro hash será modificado (o que você pode não querer), mas não criará um hash intermediário para cada nova mesclagem.E se:
fonte
Use #inject
fonte
Aqui você pode usar injetar ou reduzir da classe Enumerable, já que ambos são apelidos um do outro, portanto, não há benefício de desempenho para nenhum deles.
fonte