Probablemente me esté perdiendo algo obvio, pero ¿hay alguna manera de acceder al índice / recuento de la iteración dentro de un hash en cada bucle?
hash = {'three' => 'one', 'four' => 'two', 'one' => 'three'}
hash.each { |key, value|
# any way to know which iteration this is
# (without having to create a count variable)?
}
ruby
enumerable
Upgradingdave
fuente
fuente
Respuestas:
Si desea conocer el índice de cada iteración, puede usar
.each_with_index
fuente
hash.each_with_index { |(key,value),index| ... }
hash.each
proporciona cada par clave-valor en unArray
. Los parens hacen lo mismo que(key,value) = arr
poner el primer valor (la clave) enkey
y el segundo envalue
.each_with_index
en el RDoc para Hash: ruby-doc.org/core/classes/Hash.html . Ahora veo que es miembro de Enumerable. Pero es una lástima que RDoc no pueda hacer referencias cruzadaseach_with_index
de Hash.html.irb
y usoClassName#instance_methods
para asegurarme de que no haya nada que me haya perdido.ClassName#instance_methods
ha sido muy útilPuede iterar sobre las claves y obtener los valores manualmente:
EDITAR: según el comentario de rampion, también aprendí que puede obtener tanto la clave como el valor como una tupla si repite
hash
:fuente
key
en el primer bucle hay una matriz de par clave + valor, por lo que usarlo como índicehash
es incorrecto. ¿Lo has probado alguna vez?