2011-05-23 19 views

Respuesta

15

Por ejemplo así:

foo.each_with_index do |elem, index| 
    if index == foo.length - 1 
     puts 'this is a last element!' 
    else 
     # smth 
    end 
end 

El problema que puede tener es que los elementos de un mapa no vienen en un orden específico. En mi versión de Rubí que los veo en el siguiente orden:

["abc", 3] 
["foo", 1] 
["bar", 2] 

Tal vez usted quiere atravesar las teclas ordenados en su lugar. Por ejemplo:

foo.keys.sort.each_with_index do |key, index| 
    if index == foo.length - 1 
     puts 'this is a last element!' 
    else 
     p foo[key] 
    end 
end 
+3

En Ruby 1.9, hashes ahora se ordenan. Esto significa que realmente puede usar los índices para algo, como lo hizo aquí, sin la necesidad de pasar a la clasificación. El orden es el orden de inserción. [Este] (http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash/) es una buena y corta lectura sobre esto. Para las versiones anteriores de Ruby, esto, por supuesto, no se aplica. – simonwh

+0

Recordé algo como esto, pero no estaba seguro de en qué versión se ha agregado esto. Tengo 1.8.7 todavía. Gracias por la información y el enlace. – detunized

Cuestiones relacionadas