DEV Community

Avraam Mavridis
Avraam Mavridis

Posted on

 

CodeTip - Ruby: Compare class instances

In the previous post I wrote about how to compare objects in Javascript. In Ruby we can do the same using the Comparable module. We include the comparable module in our class and we define a pseudooperator-method <=>. Let’s say we have again a Car class that looks like this:

class Car
  attr :speed

  def initialize(speed)
    @speed = speed
  end
end

And now let’s make their instances comparable by including the Comparable module and defining the <=> pseudooperator.

class Car
  include Comparable
  attr :speed

  def <=>(other)
    self.speed <=> other.speed
  end

  def initialize(speed)
    @speed = speed
  end
end

car1 = Car.new(100)
car2 = Car.new(120)
car3 = Car.new(90)

p car2 > car1 # true
p car3 > car2 # false


cars = [car1, car2, car3]

p cars.sort() # [#<Car:0x000055aec8add4b0 @speed=90>, #<Car:0x000055aec8add500 @speed=100>, #<Car:0x000055aec8add4d8 @speed=120>]

Top comments (1)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.