Заметки о Ruby. №1. [[: key,: value], [: key2,: value2]] --> {: key =>: value,: key2 =>: value2 }
Планирую начать очень короткие заметки о ruby.
Иногда нам нужно преобразовать структуру вида [[:key, :value], [:key2, :value2]] в
{ :key => :value, :key2 => :value2 }
Короткое решение:
Hash[[[:key, :value], [:key2, :value2]]]
К сожалению, в ruby 1.8.6 не работает. В 1.8.7 баг (?) исправили.
Обычное решение:
[[:key, :value], [:key2, :value2]].inject({}) { |hash, pair| hash[pair[0]] = pair[1]; hash }
Мегакороткое решение, а главное понятное и работает везде от Eugzol’а:
Hash[*[[:key, :value], [:key2, :value2]].flatten]