En Ruby, un hash se refiere a una colección de pares de valores clave. Es muy similar a una matriz en el sentido de que puede almacenar múltiples valores relacionados, pero la indexación se realiza a través de claves en lugar de enteros. Si está familiarizado con los lenguajes de programación de Python, piense en Ruby Hashes como diccionarios de Python.
Por otro lado, una matriz se refiere a una colección ordenada de valores. Puede pensar en una matriz como una lista de elementos con un índice o posición específicos para cada elemento.
Puede encontrar tales casos en los que necesita expandir un índice a un hash Ruby. Esto facilita mapear un conjunto dado de valores en una matriz a un formato similar a un diccionario correspondiente.
Este tutorial cubre varios métodos para convertir una matriz de rubí dada en un hash.
Matriz de ejemplo
Para demostrar cómo podemos convertir una matriz a un hash en Ruby, trabajaremos con la matriz de ejemplo que se proporciona a continuación:
arr = [1, 'mysql', 2, 'postgresql', 3, 'sqlite']]
En este caso, deseamos convertir la matriz en un hash donde el valor numérico actúa como la clave, y los valores de cadena son el valor del hash.
Convertir una matriz a hash usando el método To_h
En las últimas versiones de Ruby, tenemos acceso al método To_h que nos permite convertir una matriz bidimensional en un hash Ruby.
Por lo tanto, primero necesitamos convertir la matriz unidimensional en una matriz bidimensional.
Podemos lograr esto utilizando el método cada_slice. Este método se define en el módulo enumerable de Ruby que se incluye en la clase de matriz. Nos permite iterar sobre los elementos de una matriz en rodajas de un tamaño dado.
Podemos usar este método como se demuestra en el siguiente código:
arrugado.cada_slice (2)
=> #
Esto devuelve un objeto enumerador que podemos convertir en una matriz utilizando el método TO_A como se muestra en el siguiente:
IRB (principal): 004: 0> arr.cada_slice (2).a_a
=> [[1, "mysql"], [2, "PostgreSQL"], [3, "Sqlite"]]]
Esto debería darnos una matriz bidimensional, como se demostró anteriormente.
Finalmente, podemos convertir los valores en A ha como se muestra en lo siguiente:
IRB (principal): 005: 0> arr.cada_slice (2).a_a.to_h
El hash resultante es el siguiente:
=> 1 => "mysql", 2 => "postgresql", 3 => "sqlite"
Convertir una matriz a hash usando el método hash :: []
La notación :: [] en la clase Ruby Hash nos permite devolver un nuevo hash con los valores proporcionados.
Para convertir una matriz a un hash usando este método, podemos usar el siguiente comando:
irb (principal): 011: 0> hash ['1', 'mysql', '2', 'PostgreSQL', '3', 'Sqlite']
=> "1" => "MySql", "2" => "PostgreSql", "3" => "Sqlite"
Esto debería devolver un nuevo hash sin necesidad de convertir la matriz en una matriz bidimensional.
Conclusión
Discutimos cómo podría usar el método de matriz#to_h y hash :: [] para convertir una matriz a un hash en el lenguaje de programación de Ruby.