Type:
Class

Range serialization/deserialization

A Range represents an interval—a set of values with a beginning and an end. Ranges may be constructed using the s..e and s...e literals, or with ::new. Ranges constructed using .. run from the beginning to the end inclusively. Those created using ... exclude the end value. When used as an iterator, ranges return each value in the sequence.

(-1..-5).to_a      #=> []
(-5..-1).to_a      #=> [-5, -4, -3, -2, -1]
('a'..'e').to_a    #=> ["a", "b", "c", "d", "e"]
('a'...'e').to_a   #=> ["a", "b", "c", "d"]

Custom Objects in Ranges

Ranges can be constructed using any objects that can be compared using the <=> operator. Methods that treat the range as a sequence (#each and methods inherited from Enumerable) expect the begin object to implement a succ method to return the next object in sequence. The step and include? methods require the begin object to implement succ or to be numeric.

In the Xs class below both <=> and succ are implemented so Xs can be used to construct ranges. Note that the Comparable module is included so the == method is defined in terms of <=>.

class Xs                # represent a string of 'x's
  include Comparable
  attr :length
  def initialize(n)
    @length = n
  end
  def succ
    Xs.new(@length + 1)
  end
  def <=>(other)
    @length <=> other.length
  end
  def to_s
    sprintf "%2d #{inspect}", @length
  end
  def inspect
    'x' * @length
  end
end

An example of using Xs to construct a range:

r = Xs.new(3)..Xs.new(6)   #=> xxx..xxxxxx
r.to_a                     #=> [xxx, xxxx, xxxxx, xxxxxx]
r.member?(Xs.new(5))       #=> true
===

rng === obj â true or false Instance Public methods Returns true

2015-05-01 01:09:59
bsearch

rng.bsearch {|obj| block } â value Instance Public methods By using binary

2015-05-01 01:19:55
include?

rng.include?(obj) â true or false Instance Public methods Returns true

2015-05-01 01:45:39
member?

rng.member?(obj) â true or false Instance Public methods Returns true

2015-05-01 02:00:49
first

rng.first â objrng.first(n) â an_array Instance Public methods Returns

2015-05-01 01:39:53
to_s

rng.to_s â string Instance Public methods Convert this range object to a

2015-05-01 02:24:48
size

rng.size â num Instance Public methods Returns the number

2015-05-01 02:09:59
pretty_print

pretty_print(q) Instance Public methods

2015-05-01 02:07:58
new

Range.new(begin, end, exclude_end=false) â rng Class Public methods Constructs

2015-05-01 00:58:48
end

rng.end â obj Instance Public methods Returns the object that defines the

2015-05-01 01:29:37