.\" enumerator.txt - -*- Indented-Text -*- $Idaemons: /home/cvs/rb/enumerator/enumerator.txt,v 1.2 2001/07/15 10:19:24 knu Exp $ $RoughId: enumerator.txt,v 1.5 2003/02/20 12:24:51 knu Exp $ $Id$ ** Enumerable::Enumerator(Class) A class which provides a method `each' to be used as an Enumerable object. Superclass: Object Mix-ins: Enumerable require 'enumerator' Class Methods: new(obj, method = :each, *args) Creates a new Enumerable::Enumerator object, which is to be used as an Enumerable object using the given object's given method with the given arguments. e.g.: str = "xyz" enum = Enumerable::Enumerator.new(str, :each_byte) a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"] Methods: each {...} Iterates the given block using the object and the method specified in the first place. Requiring this module also adds some methods to the Object class: to_enum(method = :each, *args) enum_for(method = :each, *args) Returns Enumerable::Enumerator.new(self, method, *args). e.g.: str = "xyz" enum = str.enum_for(:each_byte) a = enum.map {|b| '%02x' % b } #=> ["78", "79", "7a"] # protects an array from being modified a = [1, 2, 3] some_method(a.to_enum) And the Enumerable module. each_slice(n) {...} Iterates the given block for each slice of elements. e.g.: (1..10).each_slice(3) {|a| p a} # outputs below [1, 2, 3] [4, 5, 6] [7, 8, 9] [10] enum_slice(n) Returns Enumerable::Enumerator.new(self, :each_slice, n). each_cons(n) {...} Iterates the given block for each array of consecutive elements. e.g.: (1..10).each_cons(3) {|a| p a} # outputs below [1, 2, 3] [2, 3, 4] [3, 4, 5] [4, 5, 6] [5, 6, 7] [6, 7, 8] [7, 8, 9] [8, 9, 10] enum_cons(n) Returns Enumerable::Enumerator.new(self, :each_cons, n). enum_with_index Returns Enumerable::Enumerator.new(self, :each_with_index). ------------------------------------------------------- Local variables: fill-column: 70 end: