зеркало из https://github.com/github/ruby.git
What's Here for Range (#4881)
This commit is contained in:
Родитель
c8661de014
Коммит
fb976df81f
92
range.c
92
range.c
|
@ -436,9 +436,8 @@ range_step_size(VALUE range, VALUE args, VALUE eobj)
|
||||||
* e.class # => Enumerator::ArithmeticSequence
|
* e.class # => Enumerator::ArithmeticSequence
|
||||||
* ('a'..'e').step # => #<Enumerator: ...>
|
* ('a'..'e').step # => #<Enumerator: ...>
|
||||||
*
|
*
|
||||||
|
* Related: Range#%.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
range_step(int argc, VALUE *argv, VALUE range)
|
range_step(int argc, VALUE *argv, VALUE range)
|
||||||
{
|
{
|
||||||
|
@ -554,6 +553,33 @@ range_step(int argc, VALUE *argv, VALUE range)
|
||||||
return range;
|
return range;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* %(n) {|element| ... } -> self
|
||||||
|
* %(n) -> enumerator
|
||||||
|
*
|
||||||
|
* Iterates over the elements of +self+.
|
||||||
|
*
|
||||||
|
* With a block given, calls the block with selected elements of the range;
|
||||||
|
* returns +self+:
|
||||||
|
*
|
||||||
|
* a = []
|
||||||
|
* (1..5).%(2) {|element| a.push(element) } # => 1..5
|
||||||
|
* a # => [1, 3, 5]
|
||||||
|
* a = []
|
||||||
|
* ('a'..'e').%(2) {|element| a.push(element) } # => "a".."e"
|
||||||
|
* a # => ["a", "c", "e"]
|
||||||
|
*
|
||||||
|
* With no block given, returns an enumerator,
|
||||||
|
* which will be of class Enumerator::ArithmeticSequence if +self+ is numeric;
|
||||||
|
* otherwise of class Enumerator:
|
||||||
|
*
|
||||||
|
* e = (1..5) % 2 # => ((1..5).%(2))
|
||||||
|
* e.class # => Enumerator::ArithmeticSequence
|
||||||
|
* ('a'..'e') % 2 # => #<Enumerator: ...>
|
||||||
|
*
|
||||||
|
* Related: Range#step.
|
||||||
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
range_percent_step(VALUE range, VALUE step)
|
range_percent_step(VALUE range, VALUE step)
|
||||||
{
|
{
|
||||||
|
@ -1670,7 +1696,7 @@ static VALUE range_include_internal(VALUE range, VALUE val, int string_use_cover
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng === object -> true or false
|
* self === object -> true or false
|
||||||
*
|
*
|
||||||
* Returns +true+ if +object+ is between <tt>self.begin</tt> and <tt>self.end</tt>.
|
* Returns +true+ if +object+ is between <tt>self.begin</tt> and <tt>self.end</tt>.
|
||||||
* +false+ otherwise:
|
* +false+ otherwise:
|
||||||
|
@ -1983,7 +2009,7 @@ range_alloc(VALUE klass)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* count -> integer0
|
* count -> integer
|
||||||
* count(object) -> integer
|
* count(object) -> integer
|
||||||
* count {|element| ... } -> integer
|
* count {|element| ... } -> integer
|
||||||
*
|
*
|
||||||
|
@ -2192,6 +2218,64 @@ range_count(int argc, VALUE *argv, VALUE range)
|
||||||
* r.include?(Xs.new(5)) #=> true
|
* r.include?(Xs.new(5)) #=> true
|
||||||
* r.include?(Xs.new(7)) #=> false
|
* r.include?(Xs.new(7)) #=> false
|
||||||
*
|
*
|
||||||
|
* == What's Here
|
||||||
|
*
|
||||||
|
* First, what's elsewhere. \Class \Range:
|
||||||
|
*
|
||||||
|
* - Inherits from {class Object}[Object.html#class-Object-label-What-27s+Here].
|
||||||
|
* - Includes {module Enumerable}[Enumerable.html#module-Enumerable-label-What-27s+Here],
|
||||||
|
* which provides dozens of additional methods.
|
||||||
|
*
|
||||||
|
* Here, class \Range provides methods that are useful for:
|
||||||
|
*
|
||||||
|
* - {Creating a Range}[#class-Range-label-Methods+for+Creating+a+Range]
|
||||||
|
* - {Querying}[#class-Range-label-Methods+for+Querying]
|
||||||
|
* - {Comparing}[#class-Range-label-Methods+for+Comparing]
|
||||||
|
* - {Iterating}[#class-Range-label-Methods+for+Iterating]
|
||||||
|
* - {Converting}[#class-Range-label-Methods+for+Converting]
|
||||||
|
*
|
||||||
|
* === Methods for Creating a \Range
|
||||||
|
*
|
||||||
|
* - ::new:: Returns a new range.
|
||||||
|
*
|
||||||
|
* === Methods for Querying
|
||||||
|
*
|
||||||
|
* - #begin:: Returns the begin value given for +self+.
|
||||||
|
* - #bsearch:: Returns an element from +self+ selected by a binary search.
|
||||||
|
* - #count:: Returns a count of elements in +self+.
|
||||||
|
* - #end:: Returns the end value given for +self+.
|
||||||
|
* - #exclude_end?:: Returns whether the end object is excluded.
|
||||||
|
* - #first:: Returns the first elements of +self+.
|
||||||
|
* - #hash:: Returns the integer hash code.
|
||||||
|
* - #last:: Returns the last elements of +self+.
|
||||||
|
* - #max:: Returns the maximum values in +self+.
|
||||||
|
* - #min:: Returns the minimum values in +self+.
|
||||||
|
* - #minmax:: Returns the minimum and maximum values in +self+.
|
||||||
|
* - #size:: Returns the count of elements in +self+.
|
||||||
|
*
|
||||||
|
* === Methods for Comparing
|
||||||
|
*
|
||||||
|
* - {#==}[#method-i-3D-3D]:: Returns whether a given object is equal to +self+
|
||||||
|
* (uses #==).
|
||||||
|
* - #===:: Returns whether the given object is between the begin and end values.
|
||||||
|
* - #cover?:: Returns whether a given object is within +self+.
|
||||||
|
* - #eql?:: Returns whether a given object is equal to +self+ (uses #eql?).
|
||||||
|
* - #include? (aliased as #member?):: Returns whether a given object
|
||||||
|
* is an element of +self+.
|
||||||
|
*
|
||||||
|
* === Methods for Iterating
|
||||||
|
*
|
||||||
|
* - #%:: Requires argument +n+; calls the block with each +n+th element of +self+.
|
||||||
|
* - #each:: Calls the block with each element of +self+.
|
||||||
|
* - #step:: Takes optional argument +n+ (defaults to 1);
|
||||||
|
calls the block with each +n+th element of +self+.
|
||||||
|
*
|
||||||
|
* === Methods for Converting
|
||||||
|
*
|
||||||
|
* - #inspect:: Returns a string representation of +self+ (uses #inspect).
|
||||||
|
* - #to_a (aliased as #entries):: Returns elements of +self+ in an array.
|
||||||
|
* - #to_s:: Returns a string representation of +self+ (uses #to_s).
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Загрузка…
Ссылка в новой задаче