From: Joel VanderWerf Date: 2004-08-19T13:07:51+09:00 Subject: Re: proc return statement Zach Dennis wrote: > I am having problems returning a value from a proc object: > > @@mappings.each{ |hsh| > begin > if( hsh['type'] == c['type'] ) then > eval( "comp=#{hsh['template']}" ) > hsh.each_key{ |key| > m = proc { @@ignore.each{ |i| return true if( key == i ) } > }.call > puts m; > } > has_mapping = true; > end > rescue; raise "Unable to evaluate passed in expression: > #{hsh['template']}"; end > break if( has_mapping ); } > > It is at the line: m = proc { @@ignore.each{ |i| return true if( key > == i ) } }.call > that I am having the problem. I want "m" to be true, but instead it > leaves the calling function. > > I have modified the line to be: > > m = nil; > proc { @@ignore.each{ |i| m=true if( key == i ) } }.call > > but I was just wondering if I could return a value w/o having to leave > the outer function. Use break: def fn m = proc {break 3}.call "m = #{m}" end p fn # ==> "m = 3"