From: Kirk Haines Date: 2004-02-14T02:29:40+09:00 Subject: Re: return from yielded block On Sat, 14 Feb 2004, Ara.T.Howard wrote: > return a value. i was not clear enough, let me try again: > > def meth s > x = > block_meth do > if s =~ /forty/ > return 40 > else > return 0 > end > end > x + 2 > end > > def block_meth; yield; end > > p(meth('forty')) # this prints 40 - i want it to print 42 Again: irb(main):001:0> def block_meth irb(main):002:1> yield irb(main):003:1> end => nil irb(main):004:0> def meth s irb(main):005:1> x = block_meth do irb(main):006:2* if s =~ /forty/ irb(main):007:3> r = 40 irb(main):008:3> else irb(main):009:3* r = 0 irb(main):010:3> end irb(main):011:2> r irb(main):012:2> end irb(main):013:1> x + 2 irb(main):014:1> end => nil irb(main):015:0> puts meth('forty') 42 => nil Is this what you want, or am I misunderstanding? Kirk Haines