Return in blocks

Whats the official word on using return to return a value in a block,
rather than just the value of the last expression?

Using ruby 1.8.2 (2004-12-25) [i386-mswin32] I see strange behaviour (
silent crash ) when explicitly using 'return' to return from a block,
yet otherwise the code runs fine.

running under ntsd

eax=74fd5054 ebx=7ffdf000 ecx=0241cdac edx=00000000 esi=77f8dd80 edi=00000000
eip=77f8dd8b esp=0240fe2c ebp=0240fef4 iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000246
ntdll!NtTerminateProcess+b:
77f8dd8b c20800 ret 0x8

Which I can't interpret as anything in particular.

···

--
Into RFID? www.rfidnewsupdate.com Simple, fast, news.

Hi,

Whats the official word on using return to return a value in a block,
rather than just the value of the last expression?

Usually use "break <value>" to pass a value from a block.

Using ruby 1.8.2 (2004-12-25) [i386-mswin32] I see strange behaviour (
silent crash ) when explicitly using 'return' to return from a block,
yet otherwise the code runs fine.

Show us a concrete code to reproduce your crash, please, preferably
using more recent version, at least 1.8.3.

              matz.

···

In message "Re: return in blocks" on Sun, 20 Nov 2005 19:29:40 +0900, Lyndon Samson <lyndon.samson@gmail.com> writes:

Lyndon Samson a écrit :

Whats the official word on using return to return a value in a block,
rather than just the value of the last expression?

return in a block doesn't just return the block, it returns the method
where the block has been created.

Exemple:

def my_method
  test = ["one", "two", "three"]
  test.each do |e|
    if e == "three"
      return "my_method returned"
    end
    puts e
  end
  puts "will it ever goes here?"
end

puts my_method

output:

one
two
my_method_returned

···

--
Lionel Thiry

Personal web site: http://users.skynet.be/lthiry/

happened.

Apologies for the noise :slight_smile:

···

On 11/21/05, Lionel Thiry <lthiryidontwantspams@skynetnospam.be> wrote:

Lyndon Samson a écrit :
> Whats the official word on using return to return a value in a block,
> rather than just the value of the last expression?

return in a block doesn't just return the block, it returns the method
where the block has been created.

Hence my silence, I'm sure when I check this will turn out to be what