假设我有这个案例类:
case class TestCaseClass(a: Int, b: Int)
我希望能够逐个字段比较其实例是否存在不等式(运算符:<、>、<=、>=),如下所示:
val a = TestCaseClass(1,1)
val b = TestCaseClass(1,2)
println(a < b) // should print "true"
有没有可以做这种事的图书馆?
假设我有这个案例类:
case class TestCaseClass(a: Int, b: Int)
我希望能够逐个字段比较其实例是否存在不等式(运算符:<、>、<=、>=),如下所示:
val a = TestCaseClass(1,1)
val b = TestCaseClass(1,2)
println(a < b) // should print "true"
有没有可以做这种事的图书馆?
在 Scala 2.13+ 中,标准库拥有您需要的一切:
如果您正在寻找任何案例类的更通用的定义(就好像它是一个元组),请参阅 stefanobaghino 的回答。
Scala 2
如果您碰巧需要做的就是比较案例类“就好像它们是元组”一样,那么您也可以在 Scala 2.12 和 Scala 2.13 中执行以下操作:
该
unapply
方法创建一个提取器对象,并由编译器在所有案例类上合成,以允许您在匹配表达式中解构它们。您可以在 Scastie 上试用此代码。
Scala 3
您可以按照如下方式进行相同的操作:
您可以在 Scastie 上试用这个其他示例。
在我的例子中,我没有
orElse
在 Ordering 类中使用该方法。以下是有效的方法: