while vs loop

V

Vetrivel Vetrivel

what is the Difference between loop and while in ruby ?

loop do
end

while 1
end
 
C

Chris Kottom

[Note: parts of this message were removed to make it a legal post.]

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.
 
N

Nobuyoshi Nakada

Hi,

At Sat, 14 Feb 2009 15:03:03 +0900,
Vetrivel Vetrivel 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
 
R

Robert Dober

Hi,

At Sat, 14 Feb 2009 15:03:03 +0900,
Vetrivel Vetrivel 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
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
 
B

Bertram Scharpf

Hi,

Am Samstag, 14. Feb 2009, 15:16:16 +0900 schrieb Nobuyoshi Nakada:
At Sat, 14 Feb 2009 15:03:03 +0900,
Vetrivel Vetrivel 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,178
Messages
2,570,955
Members
47,509
Latest member
Jack116

Latest Threads

Top