control_flow/break_inside_expression_no_parens.rb

tests/_examples/control_flow/break_inside_expression_no_parens.rb in the metorex repository.

# A `break` written inside an expression in the block of a built-in
# iterator ends that iterator with the value it carries, as one written as
# a statement does.
picked = [1, 2, 3].each { |number| number == 2 ? (break :middle) : number }
p picked

counted = 5.times { |index| index > 1 && (break index * 10) }
p counted

doubled = [4, 5, 6].map { |number| [number == 5 ? (break :stopped) : number] }
p doubled

nested = [1, 2].map do |outer|
  [10, 20].each { |inner| inner == 20 ? (break) : inner }
  outer
end
p nested

Output:

:middle
20
:stopped
[1, 2]