struct Range(B, E)
- Range(B, E)
- Struct
- Value
- Object
Overview
A Range represents an interval: a set of values with a beginning and an end.
Ranges may be constructed using the usual new method or with literals:
x..y  # an inclusive range, in mathematics: [x, y]
x...y # an exclusive range, in mathematics: [x, y)
(x..) # an endless range, in mathematics: >= x
..y   # a beginless inclusive range, in mathematics: <= y
...y  # a beginless exclusive range, in mathematics: < ySee Range literals in the language reference.
An easy way to remember which one is inclusive and which one is exclusive it to think of the extra dot as if it pushes y further away, thus leaving it outside of the range.
Ranges typically involve integers, but can be created using arbitrary objects
as long as they define succ (or pred for reverse_each), to get the
next element in the range, and < and ==, to know when the range reached the end:
# Represents a string of 'x's.
struct Xs
  include Comparable(Xs)
  getter size
  def initialize(@size : Int32)
  end
  def succ
    Xs.new(@size + 1)
  end
  def <=>(other)
    @size <=> other.size
  end
  def inspect(io)
    @size.times { io << 'x' }
  end
  def to_s(io)
    io << @size << ' '
    inspect(io)
  end
endAn example of using Xs to construct a range:
r = Xs.new(3)..Xs.new(6)
r.to_s                 # => "xxx..xxxxxx"
r.to_a                 # => [Xs.new(3), Xs.new(4), Xs.new(5), Xs.new(6)]
r.includes?(Xs.new(5)) # => trueIncluded Modules
- Enumerable(B)
- Iterable(B)
Defined in:
crystal_on_steroids/range.crInstance Method Summary
- 
        #overlaps?(other : Range) : Bool
        
          Compare two ranges and see if they overlap each other (1..5).overlaps?(4..6) # => true (1..5).overlaps?(7..9) # => false
Instance methods inherited from module Enumerable(B)
  
  
    
      avg
    avg, 
    
  
    
      blank?
    blank?, 
    
  
    
      exactly?(count : Int32, &)
    exactly?, 
    
  
    
      excludes?(obj)
    excludes?, 
    
  
    
      frequencies
    frequencies, 
    
  
    
      many?(&)many? many?, pluck(*keys) pluck, pluck?(*keys) pluck?, without(*items) without
Instance methods inherited from class Object
  
  
    
      in?(another_object)
    in?, 
    
  
    
      presence
    presence, 
    
  
    
      presence_in(another_object)
    presence_in, 
    
  
    
      present?
    present?, 
    
  
    
      to_param
    to_param, 
    
  
    
      to_query(namespace)to_query to_query
Class methods inherited from class Object
  
  
    
      ❨╯°□°❩╯︵┻━┻
    ❨╯°□°❩╯︵┻━┻
    
  
  
Instance Method Detail
Compare two ranges and see if they overlap each other
 (1..5).overlaps?(4..6) # => true
 (1..5).overlaps?(7..9) # => false