O módulo Comparable provem suporte a comparação de valores, definindo automaticamente os operadores <=
, <
, >
, >=
e ==
, além do método between?
. Para incluir o módulo Comparable a uma classe é necessário definir o operador <=>
.
Métodos[]
Método | Argumentos | Descrição |
---|---|---|
< |
Menor que. Retorna true se o operador <=> retornar -1 .
| |
<= |
Menor ou igual a.Retorna true se o operador <=> não retornar +1 .
| |
== |
Igual a. Retorna true se o operador <=> retornar 0 .
| |
> |
Maior que. Retorna true se o operador <=> retornar +1 .
| |
>= |
Maior ou igual a. Retorna true se o operador <=> não retornar -1 .
| |
between? |
min, max |
Retorna true se self <=> min for +1 e se self <=> max for -1 .
|
Exemplo[]
class Point include Comparable attr_accessor :x, :y def initialize(x, y) @x = x @y = y end def <=>(another_point) # Computa a distância da origem: dself = Math.hypot(@x, @y) dother = Math.hypot(another_point.x, another_point.y) # Compara os dois valores pelo operador <=> da classe Numeric: return dself <=> dother end end p1 = Point.new(2, 3) p2 = Point.new(3, 2) p3 = Point.new(3, 3) p1 == p2 #=> true (mesma distância) p2 > p3 #=> false (p3 está mais longe da origem) p1 < p2 #=> false (mesma distância)
Ligações externas[]
- Ruby-Doc.org - Module: Comparable (em inglês)