methods/assignment_and_conditions_no_parens.rb

tests/_examples/methods/assignment_and_conditions_no_parens.rb in the metorex repository.

class Counter
  def self.cache = (@@cache ||= {hits: 0})
end
p Counter.cache
Limit ||= 10
p Limit

class Account
  def initialize owner
    @owner = owner
  end
  def label = (if @name = @owner&.upcase then @name else "unknown" end)
end
p Account.new("ada").label
p Account.new(nil).label

continue = :ok
p continue

class Order
  %i[id total].each { |field| attr_accessor field }
  %i[status note].each(&method(:attr_reader))
end
order = Order.new
order.total = 42
p [order.total, Order.public_method_defined?(:status)]

def bucket amount
  case amount
  when 0...10 then :small
  when 10..Float::INFINITY then :large
  end
end
p [bucket(3), bucket(400)]
p case "m" when "a".."f" then :first when "g".."z" then :second end

Output:

{hits: 0}
10
"ADA"
"unknown"
:ok
[42, true]
[:small, :large]
:second