utility $R
$R(start, end[, exclusive = false]) → ObjectRange
Creates a new ObjectRange object. This method is a convenience wrapper
around the ObjectRange constructor, but $R is the preferred alias.
ObjectRange instances represent a range of consecutive values, be they
numerical, textual, or of another type that semantically supports value
ranges. See the type's documentation for further details, and to discover
how your own objects can support value ranges.
The $R function takes exactly the same arguments as the original
constructor: the lower and upper bounds (value of the same, proper
type), and whether the upper bound is exclusive or not. By default, the
upper bound is inclusive.
Examples
$R(0, 10).include(10)
// -> true
$A($R(0, 5)).join(', ')
// -> '0, 1, 2, 3, 4, 5'
$A($R('aa', 'ah')).join(', ')
// -> 'aa, ab, ac, ad, ae, af, ag, ah'
$R(0, 10, true).include(10)
// -> false
$R(0, 10, true).each(function(value) {
// invoked 10 times for value = 0 to 9
});
Note that ObjectRange mixes in the Enumerable module: this makes it
easy to convert a range to an Array (Enumerable provides the
Enumerable#toArray method, which makes the $A conversion
straightforward), or to iterate through values. (Note, however, that getting
the bounds back will be more efficiently done using the
ObjectRange#start and ObjectRange#end properties than calling the
Enumerable#min and Enumerable#max methods).
Warning
Be careful with String ranges: as described in its String#succ
method, it does not use alphabetical boundaries, but goes all the way
through the character table:
$A($R('a', 'e'))
// -> ['a', 'b', 'c', 'd', 'e'], no surprise there
$A($R('ax', 'ba'))
// -> Ouch! Humongous array, starting as ['ax', 'ay', 'az', 'a{', 'a|', 'a}', 'a~'...]
See ObjectRange for more information.