Hi, On Fri, Feb 29, 2008 at 2:33 AM, Sebastian Hungerecker <sepp2k / googlemail.com> wrote: > Blocks return the value of the last expression in them (or, if you break from > the block, they return the value given to break, the same way return works > for methods). What the yielding method does with that return value depends, > as you say, on the method, but you can't say that blocks don't return > anything. Yes, you're right - I guess what I was trying to say is that you can't have some `return n' or `break n' and *always* expect the return value (of the expression including the block) will be `n' - it'll be interpreted by the the actual function that takes the block first (or in the case of return, break out of the function). >> def some_case >> a = yield * 2 >> a + 5 >> end => nil >> some_case {break 32} => 32 >> some_case {32} => 69 >> It's kinda a moot/uninteresting point I'm taking now, though. However, it was new news to meet the semantics of `proc' differed from Proc.new so radically! Thanks guys. Arlen