Si vous voulez faire une transformation sur tous les éléments de votre dénombrable, la méthode #collect (alias #map) serait utile:
elements = enumerable.collect { |item| item.to_s }
Dans cet exemple, elements
sera contenir tous les éléments qui sont dans enumerable
, mais avec chacun d'eux traduit en une chaîne. Par exemple.
enumerable = [1, 2, 3]
elements = enumerable.collect { |number| number.to_s }
Dans ce cas, elements
serait ['1', '2', '3']
.
Voici quelques sortie illustrant irb la différence entre each
et collect
:
irb(main):001:0> enumerable = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> elements = enumerable.each { |number| number.to_s }
=> [1, 2, 3]
irb(main):003:0> elements
=> [1, 2, 3]
irb(main):004:0> elements = enumerable.collect { |number| number.to_s }
=> ["1", "2", "3"]
irb(main):005:0> elements
=> ["1", "2", "3"]
Ruby 2.0 introduisons 'recenseur :: Lazy' qui a' # to_a' et '# force' (dans le même but) . Vous pouvez lire plus ici [Ruby 2.0 Enumerable :: Lazy] (http://railsware.com/blog/2012/03/13/ruby-2-0-enumerablelazy/) – gregolsen