Okay, quindi ecco il patto, ho cercato su Google per anni per trovare una soluzione a questo e mentre ce ne sono molti là fuori, sembra che non facciano il lavoro che sto cercando.
Fondamentalmente ho un array strutturato in questo modo
["item 1", "item 2", "item 3", "item 4"]
Voglio convertirlo in un hash in modo che assomigli a questo
{ "item 1" => "item 2", "item 3" => "item 4" }
cioè gli elementi che si trovano sugli indici "pari" sono le chiavi e gli elementi sugli indici "dispari" sono i valori.
Qualche idea su come farlo in modo pulito? Suppongo che un metodo di forza bruta sarebbe quello di estrarre tutti gli indici pari in un array separato e quindi circondarli per aggiungere i valori.
*
si chiama operatore splat . Prende un array e lo converte in un elenco letterale di elementi. Quindi*[1,2,3,4]
=>1, 2, 3, 4
. In questo esempio, quanto sopra equivale a fareHash["item 1", "item 2", "item 3", "item 4"]
. EHash
ha un[]
metodo che accetta un elenco di argomenti (rendendo le chiavi degli indici pari e i valori degli indici dispari), maHash[]
non accetta un array, quindi dividiamo l'array usando*
.