Ruby | Conceptos básicos de hash

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. Los hashes a veces se denominan arrays asociativas porque asocia valores con cada una de las claves, pero hay una diferencia entre hashes y arrays. Las arrays siempre usan un valor entero para la indexación, mientras que los hash usan el objeto. Los hashes también se conocen como mapas porque asignan claves a valores.

Literales hash o creación de hashes: un hash se crea utilizando el literal hash, que es una lista separada por comas de pares clave/valor y siempre está encerrada entre llaves {}. Hay diferentes formas de crear un hash:

  • Usando el nuevo método de clase: el nuevo método de clase creará un hash vacío, lo que significa que no habrá un valor predeterminado para el hash creado.

    Sintaxis:

    hash_variable = Hash.new

    Ejemplo:

    geeks = Hash.new

    Esto creará un hash geeks vacío . También puede proporcionar el valor predeterminado a los geeks de dos maneras:

    geeks = Hash.new("GFG")
    
    or
    
    geeks = Hash.new "GFG"
    

    Aquí GFG es el valor predeterminado. Siempre que la clave o el valor no existan en el hash anterior, acceder al hash devolverá el valor predeterminado «GFG». Para proporcionar pares clave/valor, debe modificar los valores hash que se analizan a continuación en este artículo.

  • Uso de llaves {}: en esta variable hash, va seguida de = y llaves {} . Entre llaves {}, se crean los pares clave/valor.

    Sintaxis:

    hash_variable = {"key1" => value1, "key2" => value2}
    

Obtener valores hash: para obtener un valor hash, siempre coloque la clave requerida entre corchetes [] .

Ejemplo:

# Ruby program to demonstrate the creation
# of hashes and fetching the hash values
  
#!/usr/bin/ruby
  
# Creating a hash using new class method
# without the default value
geeks = Hash.new
  
# empty hash will return nothing on display
puts "#{geeks[4]}"
  
# creating hash using new class method
# providing default value
# this could be written as 
# geeks = Hash.new "GFG"
geeks_default = Hash.new("GFG")
  
# it will return GFG for every index of hash
puts "#{geeks_default[0]}"
puts "#{geeks_default[7]}"
  
# creating hash using {} braces
geeks_hash1 = {"DS" => 1, "Java" => 2}
  
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  

Producción:


GFG
GFG
1
2

Modificación de hash en Ruby: el hash se puede modificar agregando o eliminando un valor/par clave en un hash ya existente. Además, puede cambiar el valor existente de clave en el hash.

Ejemplo:

# Ruby program to demonstrate the modifying of hash
  
#!/usr/bin/ruby
  
# creating hash using {} braces
geeks_hash1 = {"DS" => 1, "Java" => 2}
  
puts "Before Modifying"
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  
  
puts "\n"
  
puts "After Modifying"
  
# modifying hash values
geeks_hash1["DS"] = 4
geeks_hash1["Java"] = 5
  
# fetching values of hash using []
puts geeks_hash1['DS'] 
puts geeks_hash1['Java'] 

Producción:

Before Modifying
1
2

After Modifying
4
5

Nota: Cada vez que el usuario proporciona dos valores diferentes a la misma clave en un hash, el valor anterior de la clave se sobrescribe con el valor más reciente de la clave. Además, el programa se ejecutará con éxito pero dará una advertencia como se muestra en el siguiente ejemplo:

# Ruby program to demonstrate the modifying hash
  
#!/usr/bin/ruby
  
# creating hash using {} braces
# providing two different values to key "DS"
geeks_hash1 = {"DS" => 1, "DS" => 4,"Java" => 2}
  
puts "Before Modifying"
  
# fetching values of hash using []
puts geeks_hash1['DS']   
puts geeks_hash1['Java']  
  
puts "\n"
  
puts "After Modifying"
  
# modifying hash values
geeks_hash1["DS"] = 4
geeks_hash1["Java"] = 5
  
# fetching values of hash using []
puts geeks_hash1['DS'] 
puts geeks_hash1['Java'] 

Producción:

Before Modifying
4
2

After Modifying
4
5
main.rb:7: warning: key "DS" is duplicated and overwritten on line 7

Publicación traducida automáticamente

Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *