From: matz@... (Yukihiro Matsumoto) Date: 2000-01-16T00:47:13+09:00 Subject: [ruby-talk:01145] Re: The value of while... Hi, In message "[ruby-talk:01138] Re: The value of while..." on 00/01/13, Dave Thomas writes: |I'd suggest that return's value is the value you're returning, and that |break should be altered to accept an argument, which becomes its value |(see below). It's bit weird for me. Because I feel returning value cannot be the value of the `return' expression itself. See this. print return(22), "\n" The value 22 will not print because `return' never gives value for the expression, but it jumps out from a procedure (a method). |The value of 'while' and 'until' could be the value of the last |expression executed (just like with methods). If 'break' returns a |value, then that's returned. This too. `break' can have some value to pass, but it's something but the return value of `break'. |> `def' is more difficult, because of implementation reason, we cannot |> have so-called unbound method object in Ruby. A Method object is a |> method bound to the certain receiver. It had been discussed in |> Japanese speaking list, but we couldn't find any good idea. | |For class methods/singletons I _think_ you can return a meaningful |Method object. Yes. |I'm not sure I see any real reason to do this, but for normal instance |methods there an analogy with a block and a Proc object. 'def' |could return an unbound method, which you have to provide a binding to |before evaluating. That binding would then produce a Method, in the |same wy that binding a bock produces a Proc. However, that would mean |a new method in Object and a new internal type, and I'm not sure that |its worth it. I think it's a too big change. matz.