Планирую начать очень короткие заметки о 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]
Иногда нам нужно преобразовать структуру вида [[: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]