control_flow/jumps_as_values_no_parens.rb

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

# A jump reads as a value wherever one goes, and a loop answers what a break
# carried out of it.
kept = [1, nil, 2].map { |held| held or next 0 }
p kept

p((break 123 while true))
p((break until false))

counted = 0
answer = while counted < 3
  counted = counted + 1
end
p answer

# A `when` with nothing under it answers nil, and so does an empty `else`.
p((case 1
when 1
when 2
end))

p((case "c"
when "a" then "a"
else
end))

# A pattern stands where a `when` value goes.
p((case "hello"
when /abc/ then false
when /^hell/ then true
end))

# A definition read as a value answers the name it defined.
named = def doubled number
  number * 2
end
p named
p doubled 21

Output:

[1, 0, 2]
123
nil
nil
nil
nil
true
:doubled
42