Mega Code Archive

 
Categories / Ruby / Range
 

Extend Range to add new method

class Range                  # Open an existing class for additions   def by(step)               # Define an iterator named by     x = self.begin           # Start at one endpoint of the range     if exclude_end?          # For ... ranges that exclude the end       while x < self.end     # Test with the < operator         yield x         x += step       end     else                     # Otherwise, for .. ranges that include the end       while x <= self.end    # Test with <= operator         yield x         x += step       end     end   end                        # End of method definition end                          # End of class modification (0..10).by(2) {|x| print x}  # Prints "0246810" (0...10).by(2) {|x| print x} # Prints "02468"