De acuerdo, así que aquí está el trato, he estado buscando en Google durante años para encontrar una solución a esto y, aunque hay muchos por ahí, no parecen hacer el trabajo que estoy buscando.
Básicamente tengo una matriz estructurada como esta
["item 1", "item 2", "item 3", "item 4"]
Quiero convertir esto en un hash para que se vea así
{ "item 1" => "item 2", "item 3" => "item 4" }
es decir, los elementos que están en los índices 'pares' son las claves y los elementos en los índices 'impares' son los valores.
¿Alguna idea de cómo hacer esto limpiamente? Supongo que un método de fuerza bruta sería extraer todos los índices pares en una matriz separada y luego recorrerlos para agregar los valores.
*
se llama el operador splat . Toma una matriz y la convierte en una lista literal de elementos. Entonces*[1,2,3,4]
=>1, 2, 3, 4
. En este ejemplo, lo anterior es equivalente a hacerHash["item 1", "item 2", "item 3", "item 4"]
. YHash
tiene un[]
método que acepta una lista de argumentos (haciendo claves de índices pares y valores de índices impares), peroHash[]
no acepta una matriz, por lo que la utilizamos*
.