Em Ruby, um hash refere-se a uma coleção de pares de valor-chave. É intimamente semelhante a uma matriz no sentido de que pode armazenar vários valores relacionados, mas a indexação é feita via teclas em vez de inteiros. Se você está familiarizado com as linguagens de programação do Python, pense nos hashes de rubi como dicionários de python.
Por outro lado, uma matriz refere -se a uma coleção ordenada de valores. Você pode pensar em uma matriz como uma lista de itens com um índice ou posição específica para cada item.
Você pode encontrar casos em que precisa expandir um índice para um hash de rubi. Isso facilita o mapeamento de um determinado conjunto de valores em uma matriz para um formato semelhante ao dicionário correspondente.
Este tutorial abrange vários métodos para converter uma determinada matriz de rubi em um hash.
Exemplo de matriz
Para demonstrar como podemos converter uma matriz em um hash em Ruby, trabalharemos com a matriz de exemplo que é fornecida no seguinte:
arr = [1, 'mysql', 2, 'pósgresql', 3, 'sqlite']
Nesse caso, desejamos converter a matriz em um hash onde o valor numérico atua como a chave, e os valores da string são o valor do hash.
Convertendo uma matriz em hash usando o método to_h
Nas mais recentes versões Ruby, temos acesso ao método TO_H que nos permite converter uma matriz bidimensional em um hash de rubi.
Portanto, precisamos primeiro converter a matriz unidimensional em uma matriz bidimensional.
Podemos fazer isso usando o método cada_slice. Este método é definido no módulo Ruby Enumerable, que está incluído na classe de matriz. Ele nos permite iterar sobre os elementos de uma matriz em fatias de um determinado tamanho.
Podemos usar este método, conforme demonstrado no seguinte código:
arr.cada_slice (2)
=> #
Isso retorna um objeto enumerador que podemos converter em uma matriz usando o método to_a, como mostrado no seguinte:
IRB (principal): 004: 0> arr.cada_slice (2).to_a
=> [[1, "MySQL"], [2, "PostGresql"], [3, "Sqlite"]]]
Isso deve nos dar uma matriz bidimensional, como demonstrado anteriormente.
Finalmente, podemos converter os valores em A, conforme mostrado no seguinte:
IRB (principal): 005: 0> arr.cada_slice (2).to_a.to_h
O hash resultante é o seguinte:
=> 1 => "mysql", 2 => "PostGresql", 3 => "sqlite"
Convertendo uma matriz em hash usando o método hash :: []
A notação:.
Para converter uma matriz em um hash usando esse método, podemos usar o seguinte comando:
IRB (Main): 011: 0> Hash ['1', 'MySql', '2', 'PostgreSql', '3', 'Sqlite']
=> "1" => "mysql", "2" => "postgresql", "3" => "sqlite"
Isso deve devolver um novo hash sem precisar converter a matriz em uma matriz bidimensional.
Conclusão
Discutimos como você poderia usar o método da matriz#to_h e hash :: [] para converter uma matriz em um hash na linguagem de programação rubi.