#!/usr/bin/env ruby # This code comes from http://ruby-it.org/pages/Comparable # Check the page for copyright notice and explanations >> 5 <= 5.0 => true >> 4 > 4 => false >> "a" < "b" => true >> class Person >> attr_reader :name >> def initialize(name) ?> @name= name >> end >> def == other ?> name == other.name >> end >> end => nil >> p1=Person.new "joe" => # >> p2=Person.new "joe" => # >> p1 == p2 => true >> p1 < p2 NoMethodError: undefined method `<' for # from (irb):57 from (null):0 >> class Person >> include Comparable # includiamo il Mixin >> attr_reader :name >> def initialize(name) ?> @name= name >> end >> # definiamo lo spaceship operator >> def <=> other ?> name <=> other.name >> end >> end => nil >> p1=Person.new "joe" => # >> p1=Person.new "john" => # >> p1=Person.new "joe" => # >> p2=Person.new "john" => # >> p3=Person.new "james" => # >> p1 != p3 => true >> p1 < p3 => false >> p1 > p3 => true >> p2 >= p3 => true