Ok, então aqui está o negócio, eu venho pesquisando há séculos para encontrar uma solução para isso e, embora existam muitos por aí, eles não parecem fazer o trabalho que estou procurando.
Basicamente, eu tenho uma matriz estruturada como esta
["item 1", "item 2", "item 3", "item 4"]
Eu quero converter isso em um Hash para que fique assim
{ "item 1" => "item 2", "item 3" => "item 4" }
ou seja, os itens que estão nos índices 'pares' são as chaves e os itens nos índices 'ímpares' são os valores.
Alguma idéia de como fazer isso de forma limpa? Suponho que um método de força bruta seria apenas extrair todos os índices pares em uma matriz separada e depois fazer um loop em torno deles para adicionar os valores.
*
é chamado de operador splat . Ele pega uma matriz e a converte em uma lista literal de itens. Então*[1,2,3,4]
=>1, 2, 3, 4
. Neste exemplo, o acima é equivalente a fazerHash["item 1", "item 2", "item 3", "item 4"]
. EHash
possui um[]
método que aceita uma lista de argumentos (criando chaves de índices pares e valores de índices ímpares), masHash[]
não aceita uma matriz, por isso dividimos a matriz usando*
.