syntax/assignments_as_values_no_parens.rb

tests/_examples/syntax/assignments_as_values_no_parens.rb in the metorex repository.

def show *values, region: nil, &block
  [values, region, block&.call]
end

def hand_over rates
  yield _ = rates
end

rate = 4
found = case
        when doubled = rate * 2
          doubled
        end
p found
p(case rate
  when limit = 4 then limit + 1
  end)

decl = case entry = [1, 2]
       when Array then entry.size
       end
p [decl, entry]

version = "1.2"
picked = if version and parsed = version.to_f
  parsed
end
p picked

p show 1, region: _ = :west
reload = -> { :reloaded }
p show(&_ = reload)
p show *_ = [5, 6]
p hand_over([7]) { |held| held }

out, err = _ = ["shipped", "none"]
p [out, err]
cache = {}
first, second = cache[:rates] ||= [8, 9]
p [first, second, cache]

Output:

8
5
[2, [1, 2]]
1.2
[[1], :west, nil]
[[], nil, :reloaded]
[[5, 6], nil, nil]
[7]
["shipped", "none"]
[8, 9, {rates: [8, 9]}]