我是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/