Abaixo está a questão na minha aula.
Dada a variável
some_array = [[:a, 123], [:b, 456]]
,
converta some_array neste hash:{a: 123, b: 456}
Respostas:
2 para resposta № 1Eu sou um iniciante também, então isso pode ser um poucoineficiente, mas é assim que eu explicaria (existem métodos mais simples que eu tenho certeza, mas desde que você mencionou isso é para uma aula, eu pensei em explicar em formato longo):
hash={}
some_array.each do |item|
hash[item[0]] = item[1]
end
Só para explicar isso, começo criando um hash vazio que vou usar depois.
Então eu percorro some_array
usando o each
método. Isso atribui cada elemento em some_array à variável item
. Dado que some_array é uma matriz aninhada (que basicamente significa que é uma matriz de matrizes), a variável de item terá o valor das matrizes internas - por exemplo, item = [:a, 123]
.
Então podemos acessar cada elemento dentro item
ao criar o hash. Seguindo o mesmo exemplo que dei anteriormente item[0] == :a
e item[1] == 123
.
Então eu uso uma forma abreviada ao criar hashes - ou seja, hash[key] = value
. Neste caso, quero que a chave seja: a (que é item [0]) e o valor seja 123 (que é item [1]). Então eu posso usar hash[item[0]] = item[1]
.
Espero que tenha ajudado!
1 para resposta № 2
Para converter em hash, simplesmente use o método .to_h
some_array.to_h