From: w_a_x_man Date: 2010-11-14T21:50:13+09:00 Subject: Re: Is it possible to break a loop from within an internal lambda function? On Nov 14, 2:54 am, timr wrote: > This code works because 'exit' within the lambda within the block > stops the loop. However, I don't want to stop the program. I need to > use break rather than exit. But break won't work within that lambda-- > the loop doesn't stop. I can of course reorganize the statement so > that it isn't a terse one-liner, and get it to work. But I would like > to be able to break the loop from within that lambda function if it is > possible.  Somehow, I guess I need to make that break have a binding > to the method. Any ideas?!? > > def solve_by_iter >   counter = 1 >   loop do >     yield counter >     counter += 1 >   end > end > solve_by_iter { |test|  lambda{puts test; exit}.call if (1..6).all?{| > num| test%num == (num-1)} } > #I want to use: solve_by_iter { |test|  lambda{puts test; break}.call > if (1..6).all?{|num| test%num == (num-1)} } solve_by_iter{|test| if (1..6).all?{|num| test % num == num - 1 } puts test break end } solve_by_iter{|test| (1..6).all?{|num| test%num == num-1} and (puts test; break) }