[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01145] Re: The value of while...

From: matz@... (Yukihiro Matsumoto)
Date: 2000-01-15 15:47:13 UTC
List: ruby-talk #1145
Hi,

In message "[ruby-talk:01138] Re: The value of while..."
    on 00/01/13, Dave Thomas <Dave@thomases.com> 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.

In This Thread