Ruby · Intermediário · Inglês · Técnico
Comparable
Módulo que dá operadores como <, > e between? e o método clamp a qualquer classe que implemente <=>. Também fornece == baseado na comparação.
Onde usar
Ao criar um tipo com ordem natural, como versão ou dinheiro, defina <=> e inclua Comparable. Assim sort, min e max funcionam sem mais código.
Em código
class Versao
include Comparable
attr_reader :n
def initialize(n); @n = n; end
def <=>(outra) = n <=> outra.n
end
puts Versao.new(2) > Versao.new(1) # => trueExemplos
Include Comparable and define the spaceship operator.
Inclua Comparable e defina o operador spaceship.
Comparable gives you between? and clamp for free.
O Comparable te dá between? e clamp de graça.
Cuidado
Se <=> devolver nil, as comparações levantam ArgumentError; trate tipos diferentes retornando nil de propósito.