[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:29940] Re: [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless

From: Benoit Daloze <eregontp@...>
Date: 2010-05-02 20:10:30 UTC
List: ruby-core #29940
On 2 May 2010 15:24:52 UTC+2, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
> It feels too confusing to me.
>
> Nobu Nakada
>

Thanks for the patch, Nobu.

So, how would this cause unexpected behavior ?

Let's say 'ret' is the return value of the last statement in the body
of the loop.

- If 'break' is not used in the loop (while/until), it will now result
in 'ret', or false if never evaluated.

Before, it always returned nil, which is not interesting and should
never have been used.
So that case is not relevant I think.

- if 'break' is used, it can return 'ret' ,
*if* the condition of the loop is met before break's condition.

So:
i = 0
ret = while i < 3
  i += 1
  break "break" if i > 3
  "loop return value"
end #=> ret = "loop return value" instead of nil

Would someone check for 'ret' to be nil?
Is there any real use case of using 'ret' (which would be nil) in this
situation ?

I think if you don't break, you would not use any value depending on
the return value of the loop.

Please say if you think this can break compatibility, and of course
any opinion is appreciated !

Regards,
B.D.

In This Thread