Method: Integer#downto

Defined in:
numeric.c

#downto(limit) {|i| ... } ⇒ self #downto(limit) ⇒ Object

Iterates the given block, passing in decreasing values from int down to and including limit.

If no block is given, an Enumerator is returned instead.

5.downto(1) { |n| print n, ".. " }
puts "Liftoff!"
#=> "5.. 4.. 3.. 2.. 1.. Liftoff!"

Overloads:

  • #downto(limit) {|i| ... } ⇒ self

    Yields:

    • (i)

    Returns:

    • (self)


5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
# File 'numeric.c', line 5141

static VALUE
int_downto(VALUE from, VALUE to)
{
    RETURN_SIZED_ENUMERATOR(from, 1, &to, int_downto_size);
    if (FIXNUM_P(from) && FIXNUM_P(to)) {
  long i, end;

  end = FIX2LONG(to);
  for (i=FIX2LONG(from); i >= end; i--) {
      rb_yield(LONG2FIX(i));
  }
    }
    else {
  VALUE i = from, c;

  while (!(c = rb_funcall(i, '<', 1, to))) {
      rb_yield(i);
      i = rb_funcall(i, '-', 1, INT2FIX(1));
  }
  if (NIL_P(c)) rb_cmperr(i, to);
    }
    return from;
}