basics/integers/comparison_and_scope_parens.rb

tests/_examples/basics/integers/comparison_and_scope_parens.rb in the metorex repository.

# Comparable is mixed into the classes whose values have an order.
p(Integer.include?(Comparable))
p(Integer.ancestors)
p(String.include?(Comparable))

# A number compared against something that is not one answers by asking that
# object, and has no ordering against it at all.
class Measure
  def initialize(value)
    @value = value
  end

  def ==(other)
    other == @value
  end
end

p(5 == Measure.new(5))
p(5 == Measure.new(6))
p(5 <=> "five")

# `Foo::bar` names a method when the name is lowercase, and a constant when it
# is capitalized.
module Units
  METRIC = "metric"

  def self.name_of(value)
    "#{value} #{METRIC}"
  end
end

puts(Units::name_of(3))
puts(Units::METRIC)

# An Integer is its own numerator over a denominator of one.
p(34.numerator)
p(34.denominator)
p(34.to_r)
p(34.size)

Output:

true
[Integer, Numeric, Comparable, Object, Kernel, BasicObject]
true
true
false
nil
3 metric
metric
34
1
(34/1)
8