gpt4 book ai didi

Scala 2.8 TreeMap 和自定义排序

转载 作者:行者123 更新时间:2023-12-04 13:02:33 25 4
gpt4 key购买 nike

我正在从 Scala 2.7 切换并订购到 Scala 2.8 并使用订购。它看起来很简单,但我想知道我能不能让它不那么冗长。例如:

scala> case class A(i: Int)
defined class A
scala> object A extends Ordering[A] { def compare(o1: A, o2: A) = o1.i - o2.i}
defined module A

如果我然后尝试创建一个 TreeMap 我会收到一个错误
scala> new collection.immutable.TreeMap[A, String]()
<console>:10: error: could not find implicit value for parameter ordering: Ordering[A]
new collection.immutable.TreeMap[A, String]()
^

但是,如果我明确指定对象 A 作为排序,它工作正常。
scala> new collection.immutable.TreeMap[A, String]()(A)
res34: scala.collection.immutable.TreeMap[A,String] = Map()

我是否总是必须明确指定顺序还是有更短的格式?

谢谢

最佳答案

请注意,创建 Ordering 的方式稍微不那么冗长。 :

implicit val OrderingA = Ordering.by((_: A).i)

Ordering 的主要优点是你可以为同一个类提供很多。如果您的 A类(class)是真正的 Ordered ,那么你应该扩展它。如果没有,您可以显式传递 Ordering 而不是使用隐式:
new collection.immutable.TreeMap[A, String]()(Ordering.by(_.i))

关于Scala 2.8 TreeMap 和自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2683879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com