In a tutorial I'm currently reading
(http://pine.fm/LearnToProgram/?Chapter=10\), this came up.
def doUntilFalse firstInput, someProc
input = firstInput
output = firstInput
while output
input = output
output = someProc.call input
end
input
end
They never really explained how this works though:
while output
What exactly is Ruby checking for here? The author uses this code for
the method:
puts doUntilFalse([5], buildArrayOfSquares).inspect
So the method would be something like this: "while [5]"
I'm extremely confused about this :), as far as I can see, it's like
asking 'What's the difference between an elephant.' If someone could
just simply explain this it would be awesome! Thanks in advance!
···
--
Posted via http://www.ruby-forum.com/\.
They never really explained how this works though:
while output
The while loop body is executed if the expression evaluates to a true-ish value.
In this case the expression is simply the local variable 'output'.
In Ruby all values are considered true *except* for nil and false. In particular
0 is considered true as is an empty string, empty array, and empty hash ("", , {}).
This often trips up Ruby newcomers.
So in your example
def doUntilFalse firstInput, someProc
input = firstInput
output = firstInput
while output
input = output
output = someProc.call input
end
input
end
the while loop will continue iterating until someProc returns a false-ish value
(either nil or false). The output of someProc is reused as its input for the
next iteration.
Gary Wright
···
On Sep 13, 2011, at 10:49 PM, Kane Williams wrote:
Thanks that was very helpful!
···
--
Posted via http://www.ruby-forum.com/.