On Nov 14, 2:54=A0am, timr <timra... / gmail.com> 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. =A0Somehow, I guess I need to make that break have a binding
> to the method. Any ideas?!?
>
> def solve_by_iter
> =A0 counter =3D 1
> =A0 loop do
> =A0 =A0 yield counter
> =A0 =A0 counter +=3D 1
> =A0 end
> end
> solve_by_iter { |test| =A0lambda{puts test; exit}.call if (1..6).all?{|
> num| test%num =3D=3D (num-1)} }
> #I want to use: solve_by_iter { |test| =A0lambda{puts test; break}.call
> if (1..6).all?{|num| test%num =3D=3D (num-1)} }


solve_by_iter{|test|
  if (1..6).all?{|num| test % num =3D=3D num - 1 }
    puts test
    break
  end
}

solve_by_iter{|test|
  (1..6).all?{|num| test%num =3D=3D num-1} and (puts test; break)
}