From: Calvin Bornhofen Date: 2013-02-02T21:01:32+09:00 Subject: Re: Enumeration vs Enumerable Hello, an enumerator (I hope you didn't mix enumerator and enumeration up; if you did, I may just have confused you more.. Sorry if that's the case), or iterator, is an object to traverse a collection. In ruby, you usually get an enumerator by calling one of enumerable's methods without a block. This enumerator itself provides all methods of enumerable, as well as some other nice functionality. It's just another way to go through a collection. An example (taken from the documentation of enumerator[1]): %w[foo bar baz].map.with_index { |w, i| "#{i}: #{w}" } # => ["0: foo", "1: bar", "2: baz"] Since there is no map_with_index function in Enumerable (or Array), we can't write that example as concise without an enumerator. We could, however, do this by hand: a = [] %w[foo bar baz].each_with_index { |w, i| a << "#{i}: #{w}" } # a is now ["0: foo", "1: bar", "2: baz"] To wrap all that up: -Collection: A collection of things, can be an array, a hash, a linked list, a mathematical set, ... (this is a general concept implemented at various places in ruby) -Enumeration: A list of all elements in a collection. Sometimes a collection itself is an enumeration, sometimes not (this is also a general concept) -Enumerable: A module providing a huge functionality for traversing and manipulating collections (this is a ruby-specific thing) -Enumerator / Iterator: An object to traverse a collection (this is a general concept and implemented in ruby) I hope I could help. :) Regards, Calvin On 02.02.2013 06:07, Arup Rakshit wrote: > @calvin - Your example is good. But in this context with this example > how array is differing from enumerator? Thanks [1]: http://www.ruby-doc.org/core-1.9.3/Enumerator.html