scala - 案例类scala的隐式排序

标签 scala implicit case-class shapeless

案例类在scala中似乎没有隐式排序。

scala> case class A(i:Int)
defined class A

scala> implicitly[Ordering[A]]
<console>:10: error: No implicit Ordering defined for A.
              implicitly[Ordering[A]]

我想知道是否总有一种通用定义所有案例类的隐式排序,如果没有,至少有一种方法可以为每种成员类型的案例类/案例类的每个类定义隐式排序。

最佳答案

案例类的订单可以使用shapeless自动导出,

import GenericOrdering._

case class Foo(i : Int, s : String)

implicitly[Ordering[Foo]]
val fs = List(
  Foo(2, "b"),
  Foo(2, "a"),
  Foo(1, "c")
).sorted
assert(fs == List(
  Foo(1, "c"),
  Foo(2, "a"),
  Foo(2, "b")
))

有关完整的示例,请参见here。完整的机制和PartialOrdering的扩展将是即将发布的shapeless 2.1.0版本的一部分。

关于scala - 案例类scala的隐式排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24917231/

相关文章:

scala - 使用任何 Monoid 通过键对值进行分组

Scala隐式方法参数消除歧义

Scala:将返回类型转换为自定义特征

Scala 鸭子打字模式匹配

pandas - Spark 与 Scala 和 Pandas

scala - 在 scala 中的自类型特征中调用父类(super class)的方法

scala - 类型类和带有单例类型/案例对象的隐式

scala - 理解 Scala 隐式

java - 更新两个并发的 hashmaps 保持自动性