metaprogramming/define_method_lambda_control_flow_no_parens.rb

tests/_examples/metaprogramming/define_method_lambda_control_flow_no_parens.rb in the metorex repository.

breaker = Class.new do
  define_method :foo do
    break 42
  end
end
puts breaker.new.foo.inspect

skipper = Class.new do
  define_method :foo do
    next 42
  end
end
puts skipper.new.foo.inspect

retrying = Class.new do
  seen = []
  define_method :foo do
    if seen.empty?
      seen << :first
      redo
    else
      seen << :second
      seen
    end
  end
end
puts retrying.new.foo.inspect

Output:

42
42
[:first, :second]