ExpertiDict

Ruby · Intermediário · Inglês · Técnico

Comparable

/ˈkɑmpərəbəl/substantivo

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)  # => true

Exemplos

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.

Veja também

Todos os termos de Ruby