Digamos que eu tenha esta classe de caso:
case class TestCaseClass(a: Int, b: Int)
Quero poder comparar suas instâncias de desigualdade (operadores: <, >, <=, >=) campo por campo assim:
val a = TestCaseClass(1,1)
val b = TestCaseClass(1,2)
println(a < b) // should print "true"
Existe alguma biblioteca que faça isso?
No Scala 2.13+, a biblioteca padrão tem tudo o que você precisa:
Se você estiver procurando por uma definição mais genérica para qualquer classe de caso, como se fosse uma tupla, veja a resposta de stefanobakhino.
Escala 2
Se por acaso tudo o que você precisa fazer é comparar classes de caso "como se fossem tuplas", você também pode fazer o seguinte no Scala 2.12 e no Scala 2.13:
O
unapply
método cria um objeto extrator e é sintetizado pelo compilador em todas as classes de caso para permitir que você as desestruture em expressões de correspondência.Você pode brincar com esse código aqui no Scastie .
Escala 3
Você pode fazer o mesmo da seguinte maneira:
Você pode brincar com este outro exemplo aqui no Scastie .
No meu caso, eu não tinha o
orElse
método na classe Ordering. Foi isso que funcionou: