mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
* range.c (range_eql): fixed rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
24489c89dd
commit
d3e42dbbe3
2 changed files with 40 additions and 36 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
Thu May 7 13:58:52 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* range.c (range_eql): fixed rdoc.
|
||||||
|
|
||||||
Thu May 7 01:59:35 2009 Tanaka Akira <akr@fsij.org>
|
Thu May 7 01:59:35 2009 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* util.c: suppress strict-aliasing warning with gcc-4.4.0 -O2 to fix
|
* util.c: suppress strict-aliasing warning with gcc-4.4.0 -O2 to fix
|
||||||
|
|
72
range.c
72
range.c
|
@ -41,7 +41,7 @@ range_init(range, beg, end, exclude_end)
|
||||||
|
|
||||||
args[0] = beg;
|
args[0] = beg;
|
||||||
args[1] = end;
|
args[1] = end;
|
||||||
|
|
||||||
if (!FIXNUM_P(beg) || !FIXNUM_P(end)) {
|
if (!FIXNUM_P(beg) || !FIXNUM_P(end)) {
|
||||||
VALUE v;
|
VALUE v;
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ rb_range_new(beg, end, exclude_end)
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* Range.new(start, end, exclusive=false) => range
|
* Range.new(start, end, exclusive=false) => range
|
||||||
*
|
*
|
||||||
* Constructs a range using the given <i>start</i> and <i>end</i>. If the third
|
* Constructs a range using the given <i>start</i> and <i>end</i>. If the third
|
||||||
* parameter is omitted or is <code>false</code>, the <i>range</i> will include
|
* parameter is omitted or is <code>false</code>, the <i>range</i> will include
|
||||||
* the end object; otherwise, it will be excluded.
|
* the end object; otherwise, it will be excluded.
|
||||||
|
@ -81,7 +81,7 @@ range_initialize(argc, argv, range)
|
||||||
VALUE range;
|
VALUE range;
|
||||||
{
|
{
|
||||||
VALUE beg, end, flags;
|
VALUE beg, end, flags;
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "21", &beg, &end, &flags);
|
rb_scan_args(argc, argv, "21", &beg, &end, &flags);
|
||||||
/* Ranges are immutable, so that they should be initialized only once. */
|
/* Ranges are immutable, so that they should be initialized only once. */
|
||||||
if (rb_ivar_defined(range, id_beg)) {
|
if (rb_ivar_defined(range, id_beg)) {
|
||||||
|
@ -95,7 +95,7 @@ range_initialize(argc, argv, range)
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.exclude_end? => true or false
|
* rng.exclude_end? => true or false
|
||||||
*
|
*
|
||||||
* Returns <code>true</code> if <i>rng</i> excludes its end value.
|
* Returns <code>true</code> if <i>rng</i> excludes its end value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -110,15 +110,15 @@ range_exclude_end_p(range)
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng == obj => true or false
|
* rng == obj => true or false
|
||||||
*
|
*
|
||||||
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
|
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
|
||||||
* beginning and end items (by comparing them with <code>==</code>), and has
|
* beginning and end items (by comparing them with <code>==</code>), and has
|
||||||
* the same #exclude_end? setting as <i>rng</t>.
|
* the same #exclude_end? setting as <i>rng</t>.
|
||||||
*
|
*
|
||||||
* (0..2) == (0..2) #=> true
|
* (0..2) == (0..2) #=> true
|
||||||
* (0..2) == Range.new(0,2) #=> true
|
* (0..2) == Range.new(0,2) #=> true
|
||||||
* (0..2) == (0...2) #=> false
|
* (0..2) == (0...2) #=> false
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -168,15 +168,15 @@ r_le(a, b)
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.eql?(obj) => true or false
|
* rng.eql?(obj) => true or false
|
||||||
*
|
*
|
||||||
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
|
* Returns <code>true</code> only if <i>obj</i> is a Range, has equivalent
|
||||||
* beginning and end items (by comparing them with #eql?), and has the same
|
* beginning and end items (by comparing them with #eql?), and has the same
|
||||||
* #exclude_end? setting as <i>rng</i>.
|
* #exclude_end? setting as <i>rng</i>.
|
||||||
*
|
*
|
||||||
* (0..2) == (0..2) #=> true
|
* (0..2).eql?(0..2) #=> true
|
||||||
* (0..2) == Range.new(0,2) #=> true
|
* (0..2).eql?(Range.new(0,2)) #=> true
|
||||||
* (0..2) == (0...2) #=> false
|
* (0..2).eql?(0...2) #=> false
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
|
@ -278,19 +278,19 @@ extern int ruby_float_step _((VALUE from, VALUE to, VALUE step, int excl));
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.step(n=1) {| obj | block } => rng
|
* rng.step(n=1) {| obj | block } => rng
|
||||||
*
|
*
|
||||||
* Iterates over <i>rng</i>, passing each <i>n</i>th element to the block. If
|
* Iterates over <i>rng</i>, passing each <i>n</i>th element to the block. If
|
||||||
* the range contains numbers, <i>n</i> is added for each iteration. Otherwise
|
* the range contains numbers, <i>n</i> is added for each iteration. Otherwise
|
||||||
* <code>step</code> invokes <code>succ</code> to iterate through range
|
* <code>step</code> invokes <code>succ</code> to iterate through range
|
||||||
* elements. The following code uses class <code>Xs</code>, which is defined
|
* elements. The following code uses class <code>Xs</code>, which is defined
|
||||||
* in the class-level documentation.
|
* in the class-level documentation.
|
||||||
*
|
*
|
||||||
* range = Xs.new(1)..Xs.new(10)
|
* range = Xs.new(1)..Xs.new(10)
|
||||||
* range.step(2) {|x| puts x}
|
* range.step(2) {|x| puts x}
|
||||||
* range.step(3) {|x| puts x}
|
* range.step(3) {|x| puts x}
|
||||||
*
|
*
|
||||||
* <em>produces:</em>
|
* <em>produces:</em>
|
||||||
*
|
*
|
||||||
* 1 x
|
* 1 x
|
||||||
* 3 xxx
|
* 3 xxx
|
||||||
* 5 xxxxx
|
* 5 xxxxx
|
||||||
|
@ -337,7 +337,7 @@ range_step(argc, argv, range)
|
||||||
|
|
||||||
if (!EXCL(range))
|
if (!EXCL(range))
|
||||||
end += 1;
|
end += 1;
|
||||||
i = FIX2LONG(b);
|
i = FIX2LONG(b);
|
||||||
while (i < end) {
|
while (i < end) {
|
||||||
rb_yield(LONG2NUM(i));
|
rb_yield(LONG2NUM(i));
|
||||||
if (i + unit < i) break;
|
if (i + unit < i) break;
|
||||||
|
@ -407,18 +407,18 @@ each_i(v, arg)
|
||||||
/*
|
/*
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.each {| i | block } => rng
|
* rng.each {| i | block } => rng
|
||||||
*
|
*
|
||||||
* Iterates over the elements <i>rng</i>, passing each in turn to the
|
* Iterates over the elements <i>rng</i>, passing each in turn to the
|
||||||
* block. You can only iterate if the start object of the range
|
* block. You can only iterate if the start object of the range
|
||||||
* supports the +succ+ method (which means that you can't iterate over
|
* supports the +succ+ method (which means that you can't iterate over
|
||||||
* ranges of +Float+ objects).
|
* ranges of +Float+ objects).
|
||||||
*
|
*
|
||||||
* (10..15).each do |n|
|
* (10..15).each do |n|
|
||||||
* print n, ' '
|
* print n, ' '
|
||||||
* end
|
* end
|
||||||
*
|
*
|
||||||
* <em>produces:</em>
|
* <em>produces:</em>
|
||||||
*
|
*
|
||||||
* 10 11 12 13 14 15
|
* 10 11 12 13 14 15
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -464,7 +464,7 @@ range_each(range)
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.first => obj
|
* rng.first => obj
|
||||||
* rng.begin => obj
|
* rng.begin => obj
|
||||||
*
|
*
|
||||||
* Returns the first object in <i>rng</i>.
|
* Returns the first object in <i>rng</i>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -480,9 +480,9 @@ range_first(range)
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.end => obj
|
* rng.end => obj
|
||||||
* rng.last => obj
|
* rng.last => obj
|
||||||
*
|
*
|
||||||
* Returns the object that defines the end of <i>rng</i>.
|
* Returns the object that defines the end of <i>rng</i>.
|
||||||
*
|
*
|
||||||
* (1..10).end #=> 10
|
* (1..10).end #=> 10
|
||||||
* (1...10).end #=> 10
|
* (1...10).end #=> 10
|
||||||
*/
|
*/
|
||||||
|
@ -561,7 +561,7 @@ range_to_s(range)
|
||||||
* call-seq:
|
* call-seq:
|
||||||
* rng.inspect => string
|
* rng.inspect => string
|
||||||
*
|
*
|
||||||
* Convert this range object to a printable form (using
|
* Convert this range object to a printable form (using
|
||||||
* <code>inspect</code> to convert the start and end
|
* <code>inspect</code> to convert the start and end
|
||||||
* objects).
|
* objects).
|
||||||
*/
|
*/
|
||||||
|
@ -588,20 +588,20 @@ range_inspect(range)
|
||||||
* rng === obj => true or false
|
* rng === obj => true or false
|
||||||
* rng.member?(val) => true or false
|
* rng.member?(val) => true or false
|
||||||
* rng.include?(val) => true or false
|
* rng.include?(val) => true or false
|
||||||
*
|
*
|
||||||
* Returns <code>true</code> if <i>obj</i> is an element of
|
* Returns <code>true</code> if <i>obj</i> is an element of
|
||||||
* <i>rng</i>, <code>false</code> otherwise. Conveniently,
|
* <i>rng</i>, <code>false</code> otherwise. Conveniently,
|
||||||
* <code>===</code> is the comparison operator used by
|
* <code>===</code> is the comparison operator used by
|
||||||
* <code>case</code> statements.
|
* <code>case</code> statements.
|
||||||
*
|
*
|
||||||
* case 79
|
* case 79
|
||||||
* when 1..50 then print "low\n"
|
* when 1..50 then print "low\n"
|
||||||
* when 51..75 then print "medium\n"
|
* when 51..75 then print "medium\n"
|
||||||
* when 76..100 then print "high\n"
|
* when 76..100 then print "high\n"
|
||||||
* end
|
* end
|
||||||
*
|
*
|
||||||
* <em>produces:</em>
|
* <em>produces:</em>
|
||||||
*
|
*
|
||||||
* high
|
* high
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -633,17 +633,17 @@ range_include(range, val)
|
||||||
* run from the start to the end inclusively. Those created using
|
* run from the start to the end inclusively. Those created using
|
||||||
* <code>...</code> exclude the end value. When used as an iterator,
|
* <code>...</code> exclude the end value. When used as an iterator,
|
||||||
* ranges return each value in the sequence.
|
* ranges return each value in the sequence.
|
||||||
*
|
*
|
||||||
* (-1..-5).to_a #=> []
|
* (-1..-5).to_a #=> []
|
||||||
* (-5..-1).to_a #=> [-5, -4, -3, -2, -1]
|
* (-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", "e"]
|
||||||
* ('a'...'e').to_a #=> ["a", "b", "c", "d"]
|
* ('a'...'e').to_a #=> ["a", "b", "c", "d"]
|
||||||
*
|
*
|
||||||
* Ranges can be constructed using objects of any type, as long as the
|
* Ranges can be constructed using objects of any type, as long as the
|
||||||
* objects can be compared using their <code><=></code> operator and
|
* objects can be compared using their <code><=></code> operator and
|
||||||
* they support the <code>succ</code> method to return the next object
|
* they support the <code>succ</code> method to return the next object
|
||||||
* in sequence.
|
* in sequence.
|
||||||
*
|
*
|
||||||
* class Xs # represent a string of 'x's
|
* class Xs # represent a string of 'x's
|
||||||
* include Comparable
|
* include Comparable
|
||||||
* attr :length
|
* attr :length
|
||||||
|
@ -663,18 +663,18 @@ range_include(range, val)
|
||||||
* 'x' * @length
|
* 'x' * @length
|
||||||
* end
|
* end
|
||||||
* end
|
* end
|
||||||
*
|
*
|
||||||
* r = Xs.new(3)..Xs.new(6) #=> xxx..xxxxxx
|
* r = Xs.new(3)..Xs.new(6) #=> xxx..xxxxxx
|
||||||
* r.to_a #=> [xxx, xxxx, xxxxx, xxxxxx]
|
* r.to_a #=> [xxx, xxxx, xxxxx, xxxxxx]
|
||||||
* r.member?(Xs.new(5)) #=> true
|
* r.member?(Xs.new(5)) #=> true
|
||||||
*
|
*
|
||||||
* In the previous code example, class <code>Xs</code> includes the
|
* In the previous code example, class <code>Xs</code> includes the
|
||||||
* <code>Comparable</code> module. This is because
|
* <code>Comparable</code> module. This is because
|
||||||
* <code>Enumerable#member?</code> checks for equality using
|
* <code>Enumerable#member?</code> checks for equality using
|
||||||
* <code>==</code>. Including <code>Comparable</code> ensures that the
|
* <code>==</code>. Including <code>Comparable</code> ensures that the
|
||||||
* <code>==</code> method is defined in terms of the <code><=></code>
|
* <code>==</code> method is defined in terms of the <code><=></code>
|
||||||
* method implemented in <code>Xs</code>.
|
* method implemented in <code>Xs</code>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue