我是 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
的伴随对象中定义以及其他默认顺序,以防万一你想知道。
关于带有 SortedMap 和 "reversed"SortedMap 的 Scala 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29798401/