Prerrequisitos: hashes y arreglos en Ruby
Las arrays y hashes son estructuras de datos que le permiten almacenar múltiples valores a la vez. En este artículo, exploraremos su sintaxis, cómo combinar funcionalidades de ambos para crear una array de hashes, recuperar valores y recorrerlos.
Una array es una colección de elementos diferentes o similares, almacenados en ubicaciones de memoria contiguas. La idea es almacenar varios elementos del mismo tipo juntos, a los que se puede hacer referencia por un nombre común.
Así es como se declara una array en Ruby:
arr = ["Geeks", 55, 61, "GFG"]
Hash es una estructura de datos que mantiene un conjunto de objetos que se denominan claves y cada clave le asocia un valor. En palabras simples, un hash es una colección de claves únicas y sus valores.
Así es como se declara una array en Ruby:
hash_variable = { "key1" => "Geeks", "key2" => "for", "key2" => "Geeks" }
Crear una array de hashes
Puede crear una array de hashes simplemente inicializando la array con hashes o usando array.push() para insertar hashes dentro de la array.
Un método simple para crear una array de hashes:
hash_arr = [ {"height" => '5 ft', "weight" => '170 lbs', "hair" => 'white'}, {:pet => 'Cat', :nest => 'Bird'} ]
O usando array.push() para insertar hashes dentro de la array:
hash_arr = [] hash1 = {"height" => '5 ft', "weight" => '170 lbs', "hair" => 'White'} hash2 = {:pet => 'Frog', :nest => 'Bird'} hash_arr.push(hash1) hash_arr.push(hash2)
Nota: tanto «Key» como :Key actúan como una clave en un hash en Ruby.
Acceder a una array de hashes
Puede acceder a los elementos de una array de hash mediante la indexación basada en arrays para acceder a un hash en particular y las claves para acceder a los valores presentes en ese hash.
hash_arr = [ {"height" => '5 ft', "weight" => '170 lbs', "hair" => 'white'}, {:pet => 'Cat', :nest => 'Bird'} ] hash_arr[0]["height"] #=> '5 ft' hash_arr[1][:nest] #=> 'Bird'
Ejemplo:
# Ruby program to illustrate how to access # the element of the array of hashes # Creating an array of hashes hash_arr = [ {"name" => 'GeeksforGeeks', "branch" => 'CSE'}, {:language1 => 'Ruby', :language2 => 'Python'} ] # Accessing the elements of hash_arr res1 = hash_arr[0]["branch"] res2 = hash_arr[1][:language1] # Display the results puts res1 puts res2
Producción:
CSE Ruby
Iterar sobre la array de hashes
Puede usar declaraciones simples .each do para iterar sobre la array de hash:
Ejemplo:
# Ruby program to illustrate how to access # the element of the array of hashes # Creating an array of hashes hash_arr = [ {name: 'Amu', occupation: 'Web developer', hobbies: 'Painting'}, {name: 'Sumit', occupation: 'HR', hobbies: 'Swimming'} ] # Iterate over the array of hashes # Using .each do statement hash_arr.each do |hash| puts 'Values in this Hash' hash.each do |key,value| puts (key.to_s + ': ' + value.to_s) end end
Producción:
Values in this Hash name: Amu occupation: Web developer hobbies: Painting Values in this Hash name: Sumit occupation: HR hobbies: Swimming
Nota: .to_s se usa para convertir todos los valores en strings para que puedan imprimirse fácilmente.