Forum: Ruby while vs loop

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Vetrivel V. (Guest)
on 2009-02-14 08:04
what is the Difference between loop and while in ruby ?

loop do
end

while 1
end
Chris K. (Guest)
on 2009-02-14 08:12
(Received via mailing list)
Loop will continue indefinitely until it meets with some break statement
somewhere in its loop body.

While can also be terminated with a break statement, but more
traditionally,
it ends when the condition specified in the while statement is
satisfied.
If you have "while 1" as you've written here though, the two should be
functionally equivalent.


On Sat, Feb 14, 2009 at 7:03 AM, Vetrivel V.
<removed_email_address@domain.invalid
Nobuyoshi N. (Guest)
on 2009-02-14 08:19
(Received via mailing list)
Hi,

At Sat, 14 Feb 2009 15:03:03 +0900,
Vetrivel V. wrote in [ruby-talk:328175]:
> what is the Difference between loop and while in ruby ?
>
> loop do
> end

loop is a kernel method which takes a block.  A block
introduces new local variable scope.

  loop do
    a = 1
    break
  end
  p a #=> causes NameError

> while 1
> end

while doesn't.

  while 1
    a = 1
    break
  end
  p a #=> 1
Robert D. (Guest)
on 2009-02-14 21:35
(Received via mailing list)
On Sat, Feb 14, 2009 at 7:16 AM, Nobuyoshi N. 
<removed_email_address@domain.invalid>
wrote:
> introduces new local variable scope.
> while doesn't.
>
>  while 1
>    a = 1
>    break
>  end
>  p a #=> 1
>
> --
> Nobu Nakada
>
furthermore loop do has an implicit rescue clause for a StopIteration
exception
(I believe 1.8.7 and 1.9.1 only IIRC)

therefore

loop do
   some_enumerator.next
end
becomes a convenient idiom.

HTH
Robert
Bertram S. (Guest)
on 2009-02-21 00:18
(Received via mailing list)
Hi,

Am Samstag, 14. Feb 2009, 15:16:16 +0900 schrieb Nobuyoshi N.:
> At Sat, 14 Feb 2009 15:03:03 +0900,
> Vetrivel V. wrote in [ruby-talk:328175]:
> > what is the Difference between loop and while in ruby ?
> >
>
> loop is a kernel method which takes a block.  A block
> introduces new local variable scope.
>
> while doesn't.
>

In other words:

  $ irb
  irb(main):001:0> Kernel.private_instance_methods.grep /loop/
  => ["loop"]
  irb(main):002:0> Kernel.private_instance_methods.grep /while/
  => []

Bertram
This topic is locked and can not be replied to.