我是Scala的新手。我正在寻找在Scala中创建一个类,其中包含两个可变的SortedMap,一个以正常排序顺序(递增),一个以反向排序顺序(递减)

class MyClass {
  var mapNormal : SortedMap[Int, Int] = SortedMap.empty
  var mapReversed : ??? = SortedMap.empty
}

var x  = new MyClass
x.mapNormal += (1 -> 50)
x.mapReversed += (2 -> 51)

如何在Scala中做到这一点?

最佳答案

如果查看API docs for SortedMap ,您会发现SortedMap.empty[A]带有隐式Ordering[A]。这意味着,您可以像调用方法一样调用该方法,并自动解析隐式(为Int的默认顺序,这正是您认为的样子),或者可以提供一个显式顺序:

class MyClass {
  var mapNormal : SortedMap[Int, Int] = SortedMap.empty
  var mapReversed : SortedMap[Int, Int] = SortedMap.empty(mapNormal.ordering.reverse)
}
Int的隐式排序是在 scala.math.Ordering 的伴随对象中定义的,以及其他默认排序,以防万一。

关于scala - 具有SortedMap和 “reversed” SortedMap的Scala类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29798401/

10-10 04:47