Ruby | Clase de hash

En Ruby, Hash es una colección de claves únicas y sus valores. Hash es como una array, excepto que la indexación se realiza con la ayuda de claves arbitrarias de cualquier tipo de objeto. En Hash, el orden de devolución de claves y su valor por varios iteradores es arbitrario y generalmente no estará en el orden de inserción. El valor predeterminado de hashes es nil . Cuando un usuario intenta acceder a las claves que no existen en el hash, se devuelve el valor nulo .
 

Método de clase

1. []: este método crea un nuevo hash que se completa con los objetos dados. Es equivalente a crear un hash usando el literal {Key=>value….}. Las claves y los valores están presentes en el par, por lo que hay un número par de argumentos presentes.

Hash[(key=>value)*]

Ejemplo:

Ruby

# Ruby program to illustrate
# use of []
# Using []
p Hash["x", 30, "y", 19]
p Hash["x" => 30, "y" => 19]

Producción:

{"x"=>30, "y"=>19}
{"x"=>30, "y"=>19}

2. nuevo: este método devuelve un hash vacío. Si posteriormente se accede a un hash mediante la clave que no coincide con la entrada del hash, el valor devuelto por este método depende del estilo de new utilizado para crear un hash. En la primera forma, el acceso devuelve nil . Si se especifica obj , este objeto se utiliza para todos los valores predeterminados. Si se especifica un bloque, la clave hash y los objetos lo llamarán y devolverá el valor predeterminado. Los valores se almacenan en el hash (si es necesario) depende del bloque. 

Hash.new
Hash.new(obj)
Hash.new{|hash, key|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of new method
 
# Using new method
a = Hash.new("geeksforgeeks")
p a["x"] = 40
p a["y"] = 49
p a["x"]
p a["y"]
p a["z"]

Producción: 

40
49
40
49
"geeksforgeeks"

3.try_convert: este método se usa para convertir obj en hash y devuelve hash o nil. Devuelve nil cuando el obj no se convierte en hash.

Hash.try_convert(obj)

Ejemplo:

Ruby

# Ruby program to illustrate
# use of try_convert method
 
# Using try_convert method
p Hash.try_convert({3=>8})
p Hash.try_convert("3=>8")

Producción: 

{3=>8}
nil

Método de instancia

Nota: En los métodos que se describen a continuación, la variable hsh es la instancia de la clase Hash.

1. ==: Se le conoce como Igualdad . Se utiliza para comprobar si dos hashes son iguales o no. Si son iguales significa que contienen el mismo número de claves y el valor relacionado con estas claves es igual, entonces devolverá verdadero; de lo contrario, devolverá falso. 

hsh1 == hsh2

Ejemplo:

Ruby

# Ruby program to illustrate
# use of Equality
 
a1 = {"x" => 4, "y" => 109}
a2 = {"x" => 67, "f" => 78, "z" => 21}
a3 = {"f" => 78, "x" => 67, "z" => 21}
 
# Using equality
p a1 == a2
p a2 == a3

Producción: 

false
true

2. []: Se le conoce como Referencia de Elemento . Recupera el valor que almacenó en la clave. Si no encuentra ningún valor, devuelve el valor predeterminado.

hsh[key]

Ejemplo:

Ruby

# Ruby program to illustrate
# use of []
 
a = {"x" => 45, "y" => 67}
 
# Using []
p a["x"]
p a["z"]

Producción: 

45
nil

3. []= : Se le conoce como Asignación de Elementos . Asocia el valor dado por valor con la clave dada por clave .

hsh[key]=value

Ejemplo:

Ruby

# Ruby program to illustrate
# use of []=
 
a = {"x" => 45, "y" => 67}
 
# Using []=
a["x"]= 34
a["z"]= 89
p a

Producción:

{"x"=>34, "y"=>67, "z"=>89}

4. clear: este método elimina todas las claves y sus valores del hsh .

hsh.clear

Ejemplo:

Ruby

# Ruby program to illustrate
# use of clear method
 
a = {"x" => 45, "y" => 67}
 
# Using clear method
p a.clear

Producción:

{}

5. predeterminado: este método devuelve el valor predeterminado. El valor que devolvió hsh[key], si key no existía en hsh .

hsh.default(nil=key)

Ejemplo:

Ruby

# Ruby program to illustrate
# use of default method
 
a = Hash.new("geeksforgeeks")
 
# Using default method
p a.default
p a.default(2)

Producción: 

"geeksforgeeks"
"geeksforgeeks"

6. default=: este método establece el valor predeterminado (el valor que se devuelve para una clave y no existe en un hash ). 

hsh.default=obj

7. default_proc: en este método, si se llamó a Hash.new con el bloque. Luego devolverá el bloque; de ​​lo contrario, devolverá nil.

hsh.default_proc

Ejemplo:

Ruby

# Ruby program to illustrate
# use of default_proc method
 
a = Hash.new {|a, v| a[v] = v*v*v}
 
# Using default_proc method
b = a.default_proc
c = []
p b.call(c, 2)
p c 

Producción: 

8
[nil, nil, 8]

8. eliminar: este método se utiliza para eliminar la entrada del hash cuya clave es clave devolviendo el valor correspondiente. Si no se encuentra la clave, este método devuelve cero. Si se proporciona el bloque opcional y no se encuentra la clave, pasará el bloque y devolverá el resultado del bloque.

hsh.delete(key)
hsh.delete(key){|key|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of delete method
 
a = {"x" => 34, "y" => 60}
 
# Using delete method
p a.delete("x")
p a.delete("z")

Producción: 

34
nil

9. delete_if: este método elimina las claves y sus valores del hsh cuando el bloque es verdadero.

hsh.delete_if{|key, value|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of delete_if method
 
a = {"x" => 34, "y" => 60}
 
# Using delete_if method
p a.delete_if {|key, value| key >= "y"}

Producción:

{"x"=>34}

10. each : este método llama al bloque una vez por cada clave que se presenta en hsh y pasa la clave y el valor como parámetro. 

hsh.each{|key, value|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of each method
 
a = {"x" => 34, "y" => 60}
 
# Using each method
a.each {|key, value| puts  "the value of #{key} is #{value}" }

Producción: 

the value of x is 34
the value of y is 60

11. each_key : este método llama al bloque una vez por cada clave presente en hsh y pasa la clave como parámetro.

hsh.each_key{|key|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of each_key method
 
a = { "x" => 34, "y" => 60 }
 
# Using the each_key method
a.each_key {|key| puts key }

Producción: 

x
y

12. each_pair: Este método es similar al método Hash#each .

hsh.each_pair{|key, value|block}

13. each_value: este método llama al bloque una vez por cada clave que se presenta en hsh y pasa el valor como parámetro.

hsh.each_key{|value|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of each_value method
 
# Using each_value method
a = { "g" => 23, "h" => 25, "x"=>3432, "y"=>3453, "z"=>676 }
a.each_value{|value| puts value }

Producción: 

23
25
3432
3453
676

14.empty?: este método devuelve verdadero si hsh no contiene ningún par de clave y valor. De lo contrario, devuelve falso. 

hsh.empty?

15. fetch: este método devuelve un valor del hsh usando la clave dada. Si no se encuentra la clave, el resultado depende de las siguientes condiciones:

  • Si no hay argumento, generará una excepción.
  • Si se proporciona el valor predeterminado, devolverá el valor predeterminado.
  • Si hay un bloque de opciones, ejecutará el bloque y devolverá el resultado del bloque.

fetch method no contiene ningún valor predeterminado. Cuando se crea el hash, solo buscará las claves presentes en el hash.

hsh.fetch(key[, default])
hsh.fetch(key){|key|block}

16. ¿tiene_clave? : este método devuelve verdadero si la clave dada está presente en el hsh , de lo contrario, devuelve falso.

hsh.has_key?

Ejemplo:

Ruby

# Ruby program to illustrate
# use of has_key? method
 
a = {"g" => 23, "h" => 25, "x"=>3432, "y"=>3453, "z"=>676}
 
# Using has_key? method
p a.has_key?("x")
p a.has_key?("p")

Producción: 

true
false

17. ¿tiene_valor? : este método devuelve verdadero si el valor dado está presente para una clave en el hsh , de lo contrario, devuelve falso.

hsh.has_value?

Ejemplo:

Ruby

# Ruby program to illustrate
# use of has_value? method
 
a = { "g" => 23, "h" => 25, "x"=>3432, "y"=>3453, "z"=>676 }
 
# Using has_value? method
p a.has_value?(23)
p a.has_value?(234)

Producción: 

true
false

18. incluir? : ¿Este método es similar a Hash#has_key? método.

hsh.include?

19. índice: este método devuelve la clave que contiene el valor dado. Si la clave múltiple contiene el valor dado, devolverá solo una clave de todas las claves y, si no se encuentra, devolverá cero. Este es un método obsoleto. Así que tenemos que usar la tecla Hash# en su lugar.

hsh.index(value)

20. invertir: este método devuelve un nuevo hash creado por los valores de hsh como claves y las claves como valores. Si se encuentran valores duplicados, contendrá solo un valor único como clave de todos los valores. 

hsh.invert

Ejemplo: 

Ruby

# Ruby program to illustrate
# use of invert method
 
a = { "g" => 23, "h" => 25, "x"=>3432, "y"=>3453, "z"=>676 }
 
# Using invert method
p a.invert

Producción: 

{23=>"g", 25=>"h", 3432=>"x", 3453=>"y", 676=>"z"}

21. clave? : ¿Este método es similar a Hash#has_key? .

hsh.key?(key)

22. claves: este método devuelve una array de claves que se presentan en el hash.

hsh.keys

23. length : este método devuelve el número de par clave y valor del hsh .

hsh.length

Ejemplo:

Ruby

# Ruby program to illustrate
# use of length method
 
a = {"g" => 23, "h" => 25}
 
# Using the length method
p a.length

Producción: 

2

24. miembro? : ¿Este método es similar a Hash#has_key? .

hsh.member?(key)

25. fusionar: este método devuelve un nuevo hash que contiene el contenido other_hsh . Si se especifica un bloque, cada clave duplicada y sus valores se llaman desde los hash y el valor almacenado en el nuevo hash.

hsh.merge(other_hsh)
hsh.merge(other_hsh){|key, old_value, new_value|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of merge method
 
a1 = { "g" => 23, "h" => 25 }
a2 = { "h" => 2343, "i" => 4340 }
 
# Using merge method
p a1.merge(a2)

Producción:

 {"g"=>23, "h"=>2343, "i"=>4340}

26. fusionar! : este método fusiona el contenido de un hsh en otro hsh y sobrescribe las entradas con claves duplicadas con las de other_hsh .

hsh.merge!(other_hsh)
hsh.merge!(other_hsh){|key, old_value, new_value|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of merge! method
 
a1 = {"g" => 23, "h" => 25}
a2 = {"h" => 2343, "i" => 4340}
 
# Using merge! method
p a1.merge!(a2)
 
a1 = {"g" => 23, "h" => 25 }
 
# Using merge! method
p a1.merge!(a2) {|x, y, z| y}
p a1

Producción: 

{"g"=>23, "h"=>2343, "i"=>4340}
{"g"=>23, "h"=>25, "i"=>4340}
{"g"=>23, "h"=>25, "i"=>4340}

27. repetición: este método recrea el hash en función del valor hash actual de cada clave. Si el valor del hash de las claves cambió, volverá a indexar el hsh .

hsh.rehash

Ejemplo:

Ruby

# Ruby program to illustrate
# use of rehash method
 
x = [ "x", "g" ]
y = [ "y", "f" ]
a = { x => 45345, y => 6756 }
p a[x]
p x[0] = "h"
p a[x]
 
# Using rehash method
p a.rehash
p a[x]

Producción: 

45345
"h"
nil
{["h", "g"]=>45345, ["y", "f"]=>6756}
45345

28. rechazo: este método es similar a Hash#delete_if , pero devuelve la copia de hsh 

hsh.reject{|key, value|block}

29. rechazar! : este método es similar a Hash#delete_if , pero devuelve nil si no se producen cambios.

hsh.reject!{|key, value|block}

30. replace: este método reemplaza el contenido de hsh de other_hsh .

hsh.replace(other_hsh)

Ejemplo:

Ruby

# Ruby program to illustrate
# use of replace method
 
a = { "x" => 34, "y" => 60, "z"=>33 }
 
# Using replace method
p a.replace({ "y" => 88, "x" => 987 })

Producción: 

{"y"=>88, "x"=>987}

31. select : este método devuelve una nueva array que consta de un par de clave y valor solo para los que la condición dada en el bloque es verdadera.

hsh.select{|key, value| block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of select method
 
a = { "x" => 34, "y" => 60, "z"=>33 }
 
# Using select method
p a.select {|g, f| g > "x"}

Producción: 

{"y"=>60, "z"=>33}

32. shift: este método elimina el par clave y valor del hsh y los devuelve como una array de dos elementos. Si el hsh no contiene ningún par, devuelve nil.

hsh.shift

Ejemplo:

Ruby

# Ruby program to illustrate
# use of shift method
 
a = { "x" => 34, "y" => 60, "z"=>33 }
 
# Using the shift method
p a.shift
p a

Producción:

["x", 34]
{"y"=>60, "z"=>33}

33. tamaño: Este método es similar a Hash#length .

hsh.size

34. sort : este método convierte el hsh en la array anidada de arrays que contiene claves y sus valores y las ordena mediante Array#sort .

hsh.sort
hsh.sort{|a, b|block}

Ejemplo:

Ruby

# Ruby program to illustrate
# use of sort method
 
a = { "x" => 34, "y" => 60, "z"=>33 }
 
# Using sort method
p a.sort
p a.sort {|x, y| x[1]<=>y[1]}

Producción: 

[["x", 34], ["y", 60], ["z", 33]]
[["z", 33], ["x", 34], ["y", 60]]

35. store : este método es similar a Hash#[]= .

hsh.store(key, value)

36. to_a : este método convierte el hsh en la array anidada de arrays que contiene claves y sus valores.

hsh.to_a

Ejemplo:

Ruby

# Ruby program to illustrate
# use of to_a method
 
a = { "x" => 34, "y" => 60, "z"=>33 }
 
# Using to_a method
p a.to_a

Producción: 

[["x", 34], ["y", 60], ["z", 33]]

37. to_s: este método convierte hsh en una string. En otras palabras, convierte la array hash, es decir, el par de clave y valor en una string.

hsh.to_s

38. actualización: ¡ Este método es similar a Hash#merge! .

hsh.update(other_hsh)
hsh.update(other_hsh){|key, old_value, new_value|block}

39. valor? : ¿Este método es similar a Hash#has_value? .

hsh.value?(value)

40. valores: este método devuelve una array que contiene los valores que se presentan en hsh .

hsh.values

41. values_at: este método devuelve una array que contiene los valores de las claves especificadas y también proporciona valores predeterminados para las claves que no se encuentran.

hsh.values_at([keys])

Ejemplo:

Ruby

# Ruby program to illustrate
# use of values_at method
 
a = {"x" => 34, "y" => 60, "z"=>33}
 
# Using values_at method
p a.values_at("x", "y")
 
# Using default method
a.default = "geeks"
 
# Using values_at method
p a.values_at("x", "y", "z", "g")

Producción: 

[34, 60]
[34, 60, 33, "geeks"]

Referencia: https://docs.ruby-lang.org/en/2.0.0/Hash.html
 

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 *