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_indexfuente
hash.each_with_index { |(key,value),index| ... }hash.eachproporciona cada par clave-valor en unArray. Los parens hacen lo mismo que(key,value) = arrponer el primer valor (la clave) enkeyy el segundo envalue.each_with_indexen 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_indexde Hash.html.irby usoClassName#instance_methodspara asegurarme de que no haya nada que me haya perdido.ClassName#instance_methodsha 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
keyen el primer bucle hay una matriz de par clave + valor, por lo que usarlo como índicehashes incorrecto. ¿Lo has probado alguna vez?